반응형
내가하려는 것은 다음과 같습니다.
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
반응형
'MySql' 카테고리의 다른 글
MySQL은 결과 값을 다른 값으로 바꿉니다. (0) | 2021.01.24 |
---|---|
MySQL PHP에서 mysql_ * 함수를 사용하지 않는 이유는 무엇입니까? (0) | 2021.01.24 |
MySQL 한 테이블에서 다른 테이블로 mysql 데이터 가져 오기 (0) | 2021.01.24 |
MySQL로 중앙값을 계산하는 간단한 방법 (0) | 2021.01.24 |
MySQL Mac OS 10.6 (Snow Leopard), 10.7 (Lion), 10.8 (Mountain Lion)에서 PHP 및 MySQL을 활성화하는 가장 쉬운 방법은 무엇입니까? (0) | 2021.01.24 |
댓글