运行触发器时出错-错误代码:1054字段列表中的未知列“操作”

时间:2018-12-05 20:26:00

标签: sql

在运行触发器之后运行下面的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

1 个答案:

答案 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

之类的逻辑
相关问题