不能在SQL Fiddle上将INSERT STATEMENT放在TRIGGER体内

时间:2013-11-23 19:59:04

标签: mysql sqlfiddle

我有一个简单的触发器,它在SQL Fiddle上运行,但它不允许我在触发器的主体内移动我的INSERT STATEMENT。 my code on sqlFiddle 我只是想移动这一行

INSERT INTO t2(start_date) VALUES (CURDATE());

在此触发器的主体内

CREATE TRIGGER trig1
AFTER UPDATE ON t1
FOR EACH ROW 
BEGIN
  -- here, i want to put the simple INSERT STATEMENT here
END;

似乎无法在sqlFiddle上接受它
我试试的时候

CREATE TRIGGER trig1
AFTER UPDATE ON t1
FOR EACH ROW 
BEGIN
  INSERT INTO t2(start_date) VALUES (CURDATE());
END;

它给了我这个错误:架构创建失败:你的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第4行的''附近使用正确的语法:

1 个答案:

答案 0 :(得分:5)

将分隔符更改为/(斜杠)。

CREATE TABLE t1
    (
     id INT auto_increment primary key, 
     value INT(11) 
    )
/
CREATE TABLE t2
    (
     id INT auto_increment primary key,
     start_date DATE
    )
/


INSERT INTO t1( value ) VALUES( 100 )
/

CREATE TRIGGER trig1
AFTER UPDATE ON t1
FOR EACH ROW 
BEGIN
   INSERT INTO t2( start_date ) VALUES ( now() );
END;
/


UPDATE t1 SET value = 10
/

演示 - > http://sqlfiddle.com/#!2/aecc7/1