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,直接执行程序,成功。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下