2012-12-05 4 views
1

아래에 트리거가 작성되었지만 테이블에 삽입하면 삽입 된 단어를 대문자로 사용하지 않습니다. (오류도 없음). 가능한 모든 솔루션? (나는 직원과 employee2 테이블을 가지고 있는데, 업데이트하려고하는 테이블에 트리거가 없다는 것을 알기 때문에).MySQL 트리거가 실행되지 않음

DELIMITER $$ 
DROP TRIGGER IF EXISTS mytrigger$$ 
CREATE TRIGGER mytrigger before INSERT ON employee FOR EACH ROW 
BEGIN 
update employee2 
SET employee2.FName = CONCAT(UCASE(LEFT(employee2.FName, 1)), LCASE(SUBSTRING(employee2.FName, 2))); 
END; 
$$ 
DELIMITER ; 
+0

'UPDATE'를 실행하면 'AFTER INSERT'이벤트가 변경됩니다. – diEcho

답변

3

업데이트하려는 테이블에 트리거가있을 수 있으며 UPDATE 쿼리를 실행할 수 없습니다. 대신 데이터를 삽입하기 전에 수정하십시오.

DELIMITER $$ 
DROP TRIGGER IF EXISTS mytrigger$$ 
CREATE TRIGGER mytrigger before INSERT ON employee FOR EACH ROW 
BEGIN 
    SET NEW.FName = CONCAT(UCASE(LEFT(NEW.FName, 1)), LCASE(SUBSTRING(NEW.FName, 2))); 
END; 
$$ 
DELIMITER ; 

"NEW"키워드를 사용하면 삽입 할 데이터에 액세스 할 수 있습니다.

+0

사실이 너무 좋을 것 같습니다. 너무 쉬워서 고맙지 만 고맙다. 내 두뇌가 어떻게 튀어 나오는지 알기가 어렵다. 모든 정직함에서, 나는 아마 내가 결코 새로운 것을 사용할 수 없다는 것을 결코 알지 못할 것입니다. 이제는 잊지 않을 것입니다! – MisterNaux

+0

호기심에서 벗어나서 업데이트 이전에 작동하도록 동일한 트리거를 원한다면 (업데이트 전에 삽입하기 전에) 두 번째 트리거를 만들어야합니까? – MisterNaux

+0

예, 두 번째 트리거를 만들어야합니다. 업데이트 트리거를 사용하면 OLD 및 NEW 값에 액세스 할 수 있습니다. – bobwienholt

관련 문제