본문 바로가기
MySql

MySQL-삽입 후 동일한 테이블 업데이트 트리거

by 베이스 공부 2021. 1. 24.
반응형

내가하려는 것은 다음과 같습니다.

ACCOUNTS 테이블에 새 INSERT 가있는 경우 ACCOUNTS 의 행을 업데이트해야합니다. 여기서 pk = < code> NEW.edit_on 은 status = 'E'를 설정하여 특정 (이전) 계정이 편집되었음을 나타냅니다.

DELIMITER $$

DROP TRIGGER IF EXISTS `setEditStatus`$$
CREATE TRIGGER `setEditStatus` AFTER INSERT on ACCOUNTS
FOR EACH ROW BEGIN
    update ACCOUNTS set status='E' where ACCOUNTS.pk = NEW.edit_on ;
END$$

DELIMITER ;

요구 사항은 새로 삽입 된 열을 조작하는 것이 아니라 pk = NEW.edit_on 이미 존재하는 열입니다. >

그러나 동일한 테이블을 업데이트 할 수 없습니다. Ca n't update table ACCOUNTS ...이 트리거를 호출 한 명령문에서 이미 사용됨

해결 방법을 제안하십시오


수정

ACCOUNTS 테이블 :

CREATE TABLE  `ACCOUNTS` (
  `pk` bigint(10) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` bigint(9) unsigned NOT NULL,
  `edit_on` bigint(10) unsigned DEFAULT NULL,
  `status` varchar(1) NOT NULL DEFAULT 'A',
  PRIMARY KEY (`pk`) USING BTREE) ENGINE=InnoDB AUTO_INCREMENT=2147483726 DEFAULT CHARSET=latin1

 

해결 방법

 


저장된 함수 또는 트리거 내에서 함수 또는 트리거를 호출 한 명령문에서 이미 사용중인 (읽기 또는 쓰기 용) 테이블을 수정할 수 없습니다.


대상 테이블에 삽입 / 업데이트 한 다음 트랜잭션의 다른 행을 업데이트하는 저장 프로 시저를 만듭니다.


 

참조 페이지 https://stackoverflow.com/questions/12877732

 

 

반응형

댓글