Null인 MySQL 데이터베이스에 orders
的表。在我们收到资金之前, payment_date
라는 속성이 있는데, 이 속성은 날짜로 업데이트됩니다. Payment_date code> 속성이 업데이트되면
order_state code> 속성이 (수동으로!) 1 또는 2를 값 3으로 업데이트합니다.
이 프로세스를 자동화하기 위해 트리거를 만들고 싶습니다. 내 시도는 다음과 같습니다.
으아악전화하면 다음과 같은 오류 메시지가 나타납니다.
[HY000][1442] 无法更新存储函数/触发器中的表“orders”,因为它已被调用此存储函数/触发器的语句使用。
[HY000][1442] 이 저장된 함수/트리거를 호출하는 문에서 이미 사용하고 있으므로 저장된 함수/트리거의 'orders' 테이블을 업데이트할 수 없습니다.
잠금 상황(또는 무한 루프 위험)이 발생할 수 있다는 점을 고려하여 트리거를 BEFORE UPDATE
BEFORE UPDATE로 변경했습니다. 그러나 동일한 오류 메시지가 나타났습니다.
이 문제를 어떻게 해결할 수 있나요?
감사합니다!
P粉7247375112024-02-05 10:14:31
알겠습니다. 위에서 트리거를 생성하는 행만 업데이트하면 된다고 언급했으므로 트리거 본문에서 UPDATE
를 사용하지 않고도 이 작업을 수행할 수 있습니다.
설정NEW.
은 트리거가 생성된 해당 행에만 적용됩니다.
트리거 본문은 FOR EACH ROW
로 표시된 한 번에 한 행을 처리합니다. 따라서 이 트리거를 생성하는 FOR EACH ROW
指示。因此,如果生成此触发器的 UPDATE
작업에 여러 행이 포함된 경우 한 번에 한 행이 처리됩니다.
NEW.
的任何值需要使用 BEFORE
触发器。一旦 AFTER
값을 변경하려면 BEFORE
트리거를 사용해야 합니다. AFTER
트리거가 실행되면 너무 늦어서 값을 변경할 수 없습니다.