2013-10-01 6 views
1

ALTER TABLE 명령을 실행 한 후에는 변경된 테이블에서 데이터가 삽입, 업데이트 또는 삭제됨에 따라 트리거를 트리거하는 업데이트가 필요합니다. 불행하게도 DROP TRIGGERCREATE TRIGGERimplicit commits이되므로 단일 트랜잭션에서이 두 명령을 간단하게 배치 할 수는 없습니다.트랜잭션 내에서 MySQL 트리거 변경

트리거가있는 테이블 내의 데이터가 조작 될 때마다 트리거의 이전 또는 새로운 변형이 활성화되도록 MySQL 트리거를 업데이트하는 방법이 있습니까?

답변

1

당신은 원자 테이블 잠금을 사용하여 트리거를 수정할 수 있습니다

LOCK TABLES `mytable` WRITE; 

DELIMITER $$  
    DROP TRIGGER `mytable_tri` $$ 
    CREATE TRIGGER `mytable_tri` AFTER INSERT ON `mytable` 
     FOR EACH ROW BEGIN 
     /* ...... trigger code ......... */ 
    END; 
    $$ 
DELIMITER ; 

UNLOCK TABLES; 

그것은 MySQL의 5.6 및 최신에서 작동합니다.

블로그에 대한 글을 작성했습니다. http://vkwww.blogspot.com/2014/07/alter-trigger-in-mysql.html