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 客户端可能不支持分隔符。您的触发器只有一个语句,因此您可以省略 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 回答