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;

このエラーが表示されます:スキーマの作成に失敗しました:SQL構文にエラーがあります。4 行目の near '' を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

4

1 に答える 1

5

Change the delimiter to / (slash).

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
/

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

于 2013-11-23T21:28:16.973 に答える