MySQL触发器 Update触发Insert失败
今天工作需要,想要实现将仅对状态更新的表进行历史记录显示,于是考虑在原表中建立触发器,将更新的内容同时写入另一张表
于是进行测试
--建立测试表CREATETABLE`triggletest_triggle`( `id`INT(11)NOTNULL, `name`VARCHAR(5)NULLDEFAULTNULL, PRIMARYKEY(`id`) ) COLLATE='latin1_swedish_ci' ENGINE=InnoDB --建立目标表 CREATETABLE`triggletest`( `seq`INT(11)NOTNULL, `id`INT(11)NOTNULL, `name`VARCHAR(5)NULLDEFAULTNULL, PRIMARYKEY(`seq`), INDEX`id`(`id`) ) COLLATE='latin1_swedish_ci' ENGINE=InnoDB; ---写入测试数据 INSERTINTO`triggletest_triggle`VALUES(1,'A'); --建立触发器 DROPTRIGGERifEXISTStest1 CREATETRIGGERtest1 AFTERUPDATEONtriggletest_triggle FOREACHROW BEGIN INSERTINTOtriggletest(id)values(new.id); END
执行触发器语句,报错,报错内容如下:
/*SQL错误(1064):YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'CREATETRIGGERtest1 AFTERUPDATEONtriggletest_triggle FOREACHROW BEGIN'atline2*/ ---最终实现代码 DROPTRIGGERifEXISTStest1; CREATETRIGGERtest1AFTERUPDATEONtest.triggletest_triggleFOREACHROW BEGIN INSERTINTOtriggletest(id,name)values(new.id,new.name); END;
分析,由于访问工具HediSQL,导致无法正常创建触发器,相同语句,在HediSQL中执行,报错,使用shell调用mysql,直接执行程序,成功。
热门推荐
10 春节红包祝福语大全简短
11 简短的古风生日祝福语
12 早安朋友祝福语简短独特
13 学弟英语高考祝福语简短
14 岁月有芬芳祝福语简短
15 送弟妹住院祝福语简短
16 新年祝福语给长辈简短
17 升大学祝福语简短女生
18 红包祝福语简短10字