简体   繁体   English

MYSQL触发器更新复制整行

[英]MYSQL Trigger Update Copy Entire Row

I am trying to create a trigger to copy an entire row to an audit table on any UPDATE . 我正在尝试创建一个触发器,将整行复制到任何UPDATE上的审计表。

I have 2 tables 我有2张桌子

Frequencies and Frequencies_Audit FrequenciesFrequencies_Audit

This is my trigger. 这是我的触发器。

create trigger auditlog 
before update on frequencies
for each row insert into
frequencies_audit select frequencies.*;

When I update the record I get Unknown Table frequencies . 当我更新记录时,我得到未知表frequencies

I don't want to have to enter each field name separately if possible since we are constantly adding columns in the database. 我不希望必须单独输入每个字段名称,因为我们不断在数据库中添加列。

Rather than BEFORE UPDATE , you can write AFTER UPDATE trigger as follow :: 而不是BEFORE UPDATE ,您可以编写AFTER UPDATE触发器,如下所示::

DELIMITER //
CREATE TRIGGER auditlog AFTER UPDATE ON frequencies
FOR EACH ROW BEGIN  
    INSERT INTO frequencies_audit select * from frequencies where freqId = NEW.freqId;
END;//
DELIMITER ;

freqId is just a name of Id column. freqId只是Id列的名称。 Replace it with the name of Id column in your frequencies table. 将其替换为频率表中Id列的名称。

You can try this 你可以试试这个

create trigger auditlog 
AFTER UPDATE on frequencies
for each row insert into
frequencies_audit select * from frequencies;

Because in MYSQL if you wrote select TableName.* then it always return an error Unknown table TableName . 因为在MYSQL中如果你写了select TableName.*那么它总是会返回一个错误Unknown table TableName

May be it helps you. 可能对你有帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM