2013-05-02 3 views
3

다른 테이블의 삽입을 기반으로 조건부로 새 행을 삽입하는 트리거를 만들려고합니다 ... 구문을 못쓰게 할 수 없습니다. 내가 잘못 갈 수있는 위치 모르겠어요,mysql 트리거가 작동하지 않습니까?

내가 오류가 계속 어떤 이유
DELIMETER $$ 
CREATE TRIGGER overPricedCar 
    AFTER INSERT ON cars 
    FOR EACH ROW 
    BEGIN 
     IF (new.sellPrice > '80000')THEN 
     INSERT INTO listings VALUES(new.carName,'GOLD','0',' '); 
     END IF; 
    END$$ 
DELIMETER ; 

는, 그들은 구문 확인 될 것으로 보인다 : 여기 내가 지금까지 가지고있는 것입니다.

EDIT

는 오식을 교정 한 후, 트리거 '작동'.

트리거가 발생할 때 출력 할 설명을 추가했습니다. 나는 그것을 테스트 한, 출력 메시지가 화면에 출력됩니다하지만 트리거 실제로 삽입 완료되지 않은 : 나는 때 트리거가 실행 화면에 인쇄 할 메시지를 배치 할 수 있습니다

DELIMITER $$ 
CREATE TRIGGER overPricedCar 
    BEFORE INSERT ON cars 
    FOR EACH ROW 
    BEGIN 
     IF (new.sellPrice > '80000')THEN 
     INSERT INTO listings VALUES(new.carName,'GOLD','0',' '); 
     SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "New Gold car!"; // this line throws it off 
     END IF; 
    END$$ 
DELIMITER ; 

을 ?

+0

에러가 ?? – jcho360

+0

@ jcho360 # 1064 - SQL 구문에 오류가 있습니다. 'DELIMETER $$ 근처에서 사용할 올바른 구문을 보려면 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. CREATE TRIGGER overPricedCar 자동차에 삽입 한 후 각 행에 대해 B'on line 1 – shnozolla

+0

무엇이 오류입니까? –

답변

5

오타 :

DELIMETER 
    ^--- should be an I: DELIMITER 
+0

#WTF? 너 어떻게 그걸 보았 니? !! 좋은 직장 +1 – jcho360

+0

와우! 이 오타가 날 죽이고있어! 나는이 문제를 발견 할 수 없었다. 거대한 간판을 인쇄하여 책상 앞의 "CHECK FOR TYPOS"tnx에 걸어 놓겠다. – shnozolla

+0

@Marc B 트리거를 설정하는 삽입 작업을 수행 할 때 레코드가 입력되지 않지만 ('car'또는 'listings'테이블에는 입력되지 않음) 메시지가 트리거됩니까? – shnozolla

관련 문제