2

我有一个简单的触发器,它在 SQL Fiddle 上运行,但它不允许我将 INSERT STATEMENT 移动到触发器的主体内。 我在 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;

它给了我这个错误:Schema Creation Failed: You have an error in your SQL syntax; 检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 '' 附近使用正确的语法:

4

1 回答 1

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

于 2013-11-23T21:28:16.973 回答