1

每当在“table1”中插入新行时,我一直很难弄清楚如何让“table2”根据“table1”中的值更新其值。根据表 1 中插入的内容,触发器可能需要在表 2 中插入新行,或者只更新表 2 中现有行中的值。我使用“加载数据文件”和文本文件一次将几千行插入“table1”。如果可能的话,我希望在将整个文件插入“table1”之后,而不是在插入每一行之后,对表 2 进行更新。任何帮助将不胜感激。下面我包含了来自 table1 的定义以及我在 table2 中需要的内容。

//Table1
create table table1 (
V1 varchar(5),
V2 varchar(5),
V3 date,
V4 double,
V5 date,
V6 double,
V7 double,
Primary Key (V1,V2,V3,V4,V5) );

//Table2
V1 - Same as table1
V2 - Same as table1
V3 - Same as table1
V4 - Same as table1
V5 date - minimum of V5 in table1
V6 date - maximum of V5 in table1
4

1 回答 1

1

作为对我自己问题的部分回答,我发现从 MySQL 5.6 版(最新版本)开始,触发器只能配置为在插入每一行后运行。如果load data infile正在使用,则不能将触发器配置为在插入整个文件之后而不是在每一行之后运行。

希望这将在以后扩展。按照目前的语法,当您创建触发器时,您必须包含短语FOR EACH ROW. 如果您省略该短语,您将收到错误消息,但没有其他选项,例如FOR EACH 10 ROWSor FOR EACH FILE

于 2012-05-18T15:57:11.300 回答