MySQL에서 트리거를 비활성화하는 방법?
MySQL 데이터베이스에 몇 가지 트리거가 있습니다.ON DELETE
그리고.ON INSERT
. 가끔은 트리거를 비활성화해야 할 때도 있고요DROP
예.
DROP TRIGGER IF EXISTS hostgroup_before_insert //
다시 설치합니다.에 바로 갈 수 있는 방법이 있습니까?SET triggers hostgroup_before_insert = 0
우리가 외국 열쇠를 가지고 있는 것처럼.
mysql> SELECT version();
+-------------------------+
| version() |
+-------------------------+
| 5.1.61-0ubuntu0.10.10.1 |
+-------------------------+
1 row in set (0.00 sec)
Edit Answer MySQL에 내장된 서버 시스템 변수 TRIGER_CHECKs가 없습니다.
간단한 해결 방법은 대신 사용자 정의 세션 변수를 사용하는 것입니다.
#FALSE value overrides trigger type settings
SET @TRIGGER_CHECKS = [TRUE|FALSE];
SET @TRIGGER_BEFORE_INSERT_CHECKS = [TRUE|FALSE];
SET @TRIGGER_AFTER_INSERT_CHECKS = [TRUE|FALSE];
DELIMITER $$
DROP TRIGGER IF EXISTS `yearCheck_beforeInsert` $$
CREATE DEFINER=`root`@`localhost` TRIGGER `yearCheck_beforeInsert`
BEFORE INSERT ON `movies` FOR EACH ROW
#Patch starts here
thisTrigger: BEGIN
IF ((@TRIGGER_CHECKS = FALSE)
OR (@TRIGGER_BEFORE_INSERT_CHECKS = FALSE))
AND (USER() = 'root@localhost')
트리거를 일시적으로 비활성화할 수 없습니다.하나의 글로벌 변수를 사용합니다.트리거는 먼저 전역 변수 값을 확인합니다.이 경우 글로벌 변수 값을 변경하여 트리거가 작동하지 않도록 할 수 있습니다.
@Fathah의 대답은 저에게 약간 다른 해결책(저에게 더 편리한/유연한)을 가리켰습니다.
- 비활성화할 트리거 이름을 저장하는 테이블을 만듭니다.
- 그런 다음 해당 테이블에 트리거 이름을 입력하여 비활성화합니다.
- 작업을 수행하기 전에 해당 테이블의 이름을 트리거로 확인해야 합니다.
예를 들어,
create table Disabled_Triggers (TriggerName varchar(500) not null);
Insert into Disabled_Triggers(TriggerName) values ('trg_example');
CREATE TRIGGER trg_example AFTER UPDATE on Example_Table
FOR EACH ROW BEGIN
if not exists (select 1 from Disabled_Triggers where TriggerName = 'trg_example') THEN
...
END IF;
END;
이제 트리거 이름이 Disabled_에 있을 때트리거 테이블 예제_Table이 업데이트될 때 트리거가 아무 작업도 수행하지 않습니다.이것으로 제 문제가 해결되어 여기에 오게 되었습니다.
언급URL : https://stackoverflow.com/questions/13598155/how-to-disable-triggers-in-mysql
'programing' 카테고리의 다른 글
업로드 실패 버전 코드가 2인 APK가 이미 있으므로 APK에 다른 버전 코드를 사용해야 합니다. (0) | 2023.09.06 |
---|---|
SQLSTATE[HY093]:매개 변수 번호가 잘못되었습니다. 매개 변수가 정의되지 않았습니다. (0) | 2023.09.06 |
MariaDb: 중첩 json 객체 쿼리를 만드는 방법 (0) | 2023.09.06 |
Ajax.BeginForm은 Ajax 스크립트를 실행하지 않고 포스트백으로 뒤로 넘어갑니다. (0) | 2023.09.06 |
C에서 음영처리된 전역 변수에 액세스하려면 어떻게 해야 합니까? (0) | 2023.09.06 |