현재 다음과 같은 MySQL 쿼리가 있습니다.이 쿼리는 별도의 쿼리가 아닌 트리거에 포함하고 싶습니다. 두 테이블을 조회하는 업데이트 데이터가 결합 가능한 위치 :INSERT 트리거에서 두 테이블의 조인 된 행 업데이트
UPDATE `testing_names` INNER JOIN `purchase_names`
ON `testing_names`.`fulldomain` = `purchase_names`.`fulldomain`
SET
`testing_names`.`account_id` = `purchase_names`.`account_id`,
`purchase_names`.`purchase_status` = 1
WHERE `purchase_names`.`purchase_status` = 0
행이 testing_names
삽입 (별도)이다. 이 행에는 해당 항목이 purchase_names
에 있어야합니다 (SHOULD). testing_names
에 행을 삽입 한 후 다음에 내 UPDATE 쿼리를 실행하면 testing_names.account_id
을 업데이트하고 purchase_names.purchase_status
을 업데이트하면이 작업을 효과적으로 마친 것으로 표시합니다.
이것을 트리거의 일부로 실행하는 것이 좋지만 작업을 수행하는 트리거를 만들 수 없었습니다.
지금까지, 나는 성공적으로 트리거를 만들었습니다
DELIMITER $$
CREATE TRIGGER `my_trigger` AFTER INSERT
ON testing_names
FOR EACH ROW BEGIN
UPDATE `testing_names` INNER JOIN `purchase_names`
ON `testing_names`.`fulldomain` = `purchase_names`.`fulldomain`
SET
`testing_names`.`account_id` = `purchase_names`.`account_id`,
`purchase_names`.`purchase_status` = 1
WHERE `purchase_names`.`purchase_status` = 0;
END$$
DELIMITER ;
하지만 분명 행을 삽입 할 때, 나는 오류 얻을 수 있기 때문에 새로운 UPDATE 쿼리가 허용되지 않습니다 실행 : 불행하게도 #1442 - Can't update table 'testing_names' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
감사합니다. 상호 업데이트 트리거로도 가능하지는 않습니다. 나는'testing_names' BEFORE INSERT 트리거를 사용하여'testing_names'를 조정하는 방법을 찾고 있습니다. 그런 다음 AFTER INSERT를 사용하여'purchase_names'를 조정하십시오. 그것은'오류가 발생했다고 믿는'purchase_names' AFTER UPDATE 트리거에 대한 필요성을 부정해야합니다. – SimonMayer
추가 정보로서 BEGIN ... END 내부의'purchase_names' 테이블에서 SELECT 및 UPDATE 문을 실행하여'testing_names'에 대한 BEFORE INSERT 트리거의 일부로 모든 것을 할 수있었습니다. – SimonMayer