如何使用触发器计算?

时间:2012-12-21 04:33:07

标签: mysql

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

3 个答案:

答案 0 :(得分: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 ;

答案 1 :(得分:0)

它工作正常..触发器或表中没有错误。数据将被平稳地插入..!可能你在尝试之间给了一些额外的空间 ...只是看看那个

除此之外没有错误它很好......! (我在我的机器上试过它工作得很好..!)

做一件事只是整齐地把它拿到记事本中删除所有额外的空格或字符,如果你看到,然后粘贴到终端,它工作正常。

答案 2 :(得分: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;