Gav*_*vin 17 mysql database triggers
只是一个简单的问题,毫无疑问,有人会知道答案.
我需要能够在触发器中进行多次插入/更新.每次尝试都以失败结束:(
DROP TRIGGER IF EXISTS `Insert_Article`//
CREATE TRIGGER `Insert_Article` AFTER INSERT ON `Article`
FOR EACH ROW insert into FullTextStore (`Table`, `PrimaryKey`, `ColumnName`, `Data`, `Created`) values ('Article', NEW.ArticleID, 'Description', NEW.Description, UNIX_TIMESTAMP())
//
Run Code Online (Sandbox Code Playgroud)
目前,上面只是在父表插入时将一行插入表中.这很好用.
要使这与多个值一起工作,我需要做
DROP TRIGGER IF EXISTS `Insert_Article`//
CREATE TRIGGER `Insert_Article` AFTER INSERT ON `Article`
FOR EACH ROW insert into FullTextStore (`Table`, `PrimaryKey`, `ColumnName`, `Data`, `Created`)
select 'Article', NEW.ArticleID, 'Description', NEW.Description, UNIX_TIMESTAMP()
union
select 'Article', NEW.ArticleID, 'Keywords', NEW.Keywords, UNIX_TIMESTAMP()
//
Run Code Online (Sandbox Code Playgroud)
但是......必须有一个更简单的方法吗?当我尝试使用; 为了终止每个语句,它失败了
1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL version for the right syntax to use near 'select 'Article', NEW.ArticleID, 'Keywords', 'NEW.Keywords, UNIX_TIMESTAMP())' at line 1
Run Code Online (Sandbox Code Playgroud)
我甚至无法获得多个更新语句.
如果有人能指出我做错了什么,这将是一个很大的帮助?
干杯
加文
RC.*_*RC. 30
从文档: 创建触发器语法
trigger_stmt是触发器激活时要执行的语句.如果要执行多个语句,请使用BEGIN ... END复合语句构造.这也使您可以使用存储例程中允许的相同语句
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
34072 次 |
| 最近记录: |