2012-05-24 2 views
0

해당 테이블의 백업 버전에서 테이블을 복원해야했습니다. 그런 다음 트리거를 다시 만들었습니다. 나는 하나를 다시 만들 수 없습니다. 이런 종류의 방아쇠가 나에게 어떻게 보일지 몇 가지 예를 살펴 보았습니다. 나는 그것을 저장하기 위해 이전 트리거에서 "변경"을 클릭했을 때 phpmyadmin에 표시된 코드에서 복사했습니다. 그럴 수있을 거라 생각 했어!구문을 사용하여 한 테이블에서 다른 테이블로 트리거를 이동하십시오.

1064 - SQL 구문에 오류가 있습니다. 코드 위의 줄을 넣어 라인 5

CREATE TRIGGER `trig_parts_price_AfterUpdate` AFTER UPDATE ON `parts` 
    FOR EACH ROW BEGIN 
     IF (NEW.cost <> OLD.cost || NEW.price <> OLD.price || NEW.QtyInStock <> OLD.QtyInStock) THEN 
      INSERT INTO `inv_hist_simple` (sku, cost, price, QtyInStock, change_date) 
      VALUES(OLD.sku_m, NEW.cost, NEW.price, NEW.QtyInStock, NOW()); 
    END IF; 
END; 

답변

2

에서 ''근처 사용할 수있는 권리 구문에 대한 MySQL 서버 버전에 해당하는 설명서를 확인하십시오

DELIMITER $$ 

과의 마지막 줄을 변경하려면

DELIMITER ; 
,369 :

END $$ 

에 대한 코드는 마지막에이 줄을 추가

그렇지 않으면 ;은 구문 오류의 원인이되는 삽입 문 다음에 트리거 코드가 완료되었음을 서버에 알립니다.

는 그래서 기본적으로 다음과 같아야합니다

DELIMITER $$ 
CREATE TRIGGER `trig_parts_price_AfterUpdate` AFTER UPDATE ON `parts` 
    FOR EACH ROW BEGIN 
     IF (NEW.cost <> OLD.cost || NEW.price <> OLD.price || NEW.QtyInStock <> OLD.QtyInStock) THEN 
      INSERT INTO `inv_hist_simple` (sku, cost, price, QtyInStock, change_date) 
      VALUES(OLD.sku_m, NEW.cost, NEW.price, NEW.QtyInStock, NOW()); 
    END IF; 
END $$ 
DELIMITER ; 
+0

절대적으로 그것을 않았다. 감사! **** 행복한 춤 **** –

관련 문제