2012-12-21 2 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; 
관련 문제