在运行触发器之后运行下面的UPDATE
命令时,出现以下错误
错误代码:1054字段列表中的未知列“操作”
任何帮助将不胜感激。
DELIMITER $$
CREATE TRIGGER Trigger_9
BEFORE UPDATE ON Customers
FOR EACH ROW
BEGIN
INSERT INTO Customers
SET action = 'update',
Email = NEW.Email,
CustomerID = NEW.CustomerID;
END$$
DELIMITER ;
UPDATE Customers
SET Email = 'Update'
WHERE CustomerID = 12345;
SELECT * FROM Customers
答案 0 :(得分:0)
您的触发器似乎正在用于审核public class SchoolContext : DbContext
{
public SchoolContext(DbContextOptions<SchoolContext> options)
: base(options)
{
}
public DbSet<Student> Students { get; set; }
public DbSet<Instructor> Instructors { get; set; }
// public DbSet<BasePerson> People { get; set; }
}
字段的更改。您最好将这些信息插入另一个(审计)表中,该表可以命名为Customer.Email
之类。
有两种设置方法:
1)如果要保留整个历史记录,则仅将INSERT(插入)插入您的Audit表(无更新,因为它们会破坏历史记录)。在该表中,确保PK是一个(新的)自动编号列(不是CustomerID)或由CustomerID +一个(新的)日期时间列组成的复合PK。我通常建议使用自动编号,因为它更容易并且可以保证唯一性。
-或-
2)如果您只想为每个客户保留1个历史记录,则简单的方法是删除(仅1个客户行)并重新插入到“审核”表中。困难的方法是使用Customer_Audit