1
CREATE TABLE table_test_trigger (
  id INT(11) NOT NULL AUTO_INCREMENT,
  a INT(11) DEFAULT NULL,
  b INT(11) DEFAULT NULL,
  c INT(11) DEFAULT NULL,
  PRIMARY KEY (id)
);

DELIMITER $$

CREATE TRIGGER trigger1
    BEFORE INSERT
    ON table_test_trigger
    FOR EACH ROW
BEGIN
  SET NEW.c = NEW.a + NEW.b;
END
$$

私はこのコードを試しました。

エラー:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 6

4

3 に答える 3

1

これを試して:

DELIMITER $$

CREATE
    /*!50017 DEFINER = 'root'@'%' */
    TRIGGER `trigger1` BEFORE INSERT ON `table_test_trigger` 
    FOR EACH ROW BEGIN
        SET NEW.c = NEW.a + NEW.b;
    END;
$$

DELIMITER ;
于 2012-12-21T05:54:49.610 に答える
0

正常に動作します。トリガーまたはテーブルにエラーはありません。データは平和的に挿入されます..!試している間、間にいくつかの余分なスペースを与えたかもしれません...ただそれをチェックしてください

それ以外はエラーはありませんが大丈夫です…!(私は自分のマシンでそれを試しましたそれはうまくいきました..!)

メモ帳にきれいに取り込んで、余分なスペースや文字があればそれをすべて削除してから、ターミナルに貼り付けてください。問題なく動作します。

于 2012-12-21T05:12:28.793 に答える
0

スクリプトは正しいです。MySQL クライアントが区切り文字をサポートしていない可能性があります。トリガーにはステートメントが 1 つしかないため、BEGIN-END 句と DELIMITER コマンドを省略できます。

CREATE TABLE table_test_trigger (
  id INT(11) NOT NULL AUTO_INCREMENT,
  a INT(11) DEFAULT NULL,
  b INT(11) DEFAULT NULL,
  c INT(11) DEFAULT NULL,
  PRIMARY KEY (id)
);

CREATE TRIGGER trigger1
  BEFORE INSERT
  ON table_test_trigger
  FOR EACH ROW
SET NEW.c = NEW.a + NEW.b;
于 2012-12-21T07:09:24.800 に答える