2012-12-21 42 views
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

回答

0

它工作正常..there是在觸發器或表中沒有錯誤。數據將被和平插入..! 可能你在嘗試之間給了一些額外的空間...只要看看

除此之外,沒有錯誤,它是好的...! (我在我的機器上試過了)它工作正常..!)

做一件事整齊地把它記入記事本刪除所有額外的空格或字符,如果你看到,然後將其粘貼到終端,它工作正常。

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 ; 
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;