Sqlite 如何在更新触发器之前写入?

Sqlite 如何在更新触发器之前写入?,sqlite,triggers,Sqlite,Triggers,我有两张桌子,即表1和表2 当更新表1时,我想插入更新到表2的行,以便表2作为日志。 表1有第1栏、第2栏、第3栏、第4栏……第10栏 表2有第1栏、第2栏、第3栏和第4栏 因此,在插入表2中时,我只需要表1中的第1列、第2列、第3列和第4列。请看: 如果您只想将从table1更新的记录添加到table2中,并且可以在更新后使用,那么这将非常简单 delimiter // create trigger update_table1 after update on table1 for each r

我有两张桌子,即表1和表2

当更新表1时,我想插入更新到表2的行,以便表2作为日志。

表1有第1栏、第2栏、第3栏、第4栏……第10栏

表2有第1栏、第2栏、第3栏和第4栏

因此,在插入表2中时,我只需要表1中的第1列、第2列、第3列和第4列。

请看:


如果您只想将从
table1
更新的记录添加到
table2
中,并且可以在更新后使用,那么这将非常简单

delimiter //
create trigger update_table1 after update on table1
for each row 
begin
 insert into table2 
 (column1,column2,column3,column4)
 values
 (old.column1,old.column2,old.column3,old.column4);
end; //
delimiter;

更新后在这里有什么帮助?您使用的是FROM deleted,其中包含更新前的值。阅读我的链接,它在那里解释道。我专门针对您的表名和列编辑了答案。这会管用的,试试看。这是触发工作的方式。我不明白为什么我被否决了,但是……无论如何……我是新来的,也许我没有得到什么。啦啦队员,这在sqlite上不起作用。根据sqlite网站,阿比克·查克拉博蒂的答案很接近:不,这没有帮助。原因是我想将以前的值记录在表1中,这样我就不会丢失它们。只需将
new
更改为
old
即可获得旧值,我已更新了答案。系统定义的东西有多旧?或者你在解释什么吗?是的,新旧是系统定义的触发器关键字,用于在操作之前和之后获取列值
delimiter //
create trigger update_table1 after update on table1
for each row 
begin
 insert into table2 
 (column1,column2,column3,column4)
 values
 (old.column1,old.column2,old.column3,old.column4);
end; //
delimiter;