[SQL] 같은 테이블에 업데이트 후 트리거 테이블 업데이트
SQL같은 테이블에 업데이트 후 트리거 테이블 업데이트
어떻게 같은 테이블에 업데이트 후 트리거 테이블의 열을 업데이트 할 수 있습니까? 다음 트리거는 다음과 같습니다
CREATE TRIGGER upd_total_votes AFTER UPDATE ON products_score
FOR EACH ROW
UPDATE
products_score
SET
products_score.votes_total =
(SELECT
(votes_1 + votes_2 + votes_3 + votes_4 + votes_5)
FROM
products_score
WHERE
id = new.id)
지금과 같은 테이블을 업데이트 할 때
UPDATE products_score SET votes_1 = 5 WHERE id = 0
나는 다음을 얻을으로이 작업을하지 않습니다 :
#1442 - Can't update table 'products_score' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
그래서 나는 일이 어떻게이 땅에서받을 수 있나요?
해결법
-
==============================
1.당신이 전에 대신의 후 트리거를 변경하는 경우는 다음과 같이 그것을 할 수 있습니다 :
당신이 전에 대신의 후 트리거를 변경하는 경우는 다음과 같이 그것을 할 수 있습니다 :
CREATE TRIGGER upd_total_votes BEFORE UPDATE ON products_score FOR EACH ROW BEGIN SET new.votes_total = new.votes_1 + new.votes_2 + new.votes_3 + new.votes_4 + new.votes_5 END ;
-
==============================
2.당신은 트리거가에서 같은 테이블에 쿼리하지 않고 다른 행 정의 할 수 있기 때문에이 설정을 가지고이 길을 가질 수 없습니다. 당신은 당신이 원하는 toachieve 업데이트 트리거하기 전에 사용할 수 있습니다 Istead :
당신은 트리거가에서 같은 테이블에 쿼리하지 않고 다른 행 정의 할 수 있기 때문에이 설정을 가지고이 길을 가질 수 없습니다. 당신은 당신이 원하는 toachieve 업데이트 트리거하기 전에 사용할 수 있습니다 Istead :
CREATE TRIGGER upd_total_votes BEFORE UPDATE ON products_score FOR EACH ROW BEGIN SET NEW.votes_total = NEW.votes_1 + NEW.votes_2 + NEW.votes_3 + NEW.votes_4 + NEW.votes_5; END;
또는 테이블을 업데이트하는 저장 프로 시저를 사용합니다.
from https://stackoverflow.com/questions/4547465/updating-table-in-trigger-after-update-on-the-same-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오류 : 응용 프로그램 오류에 대한 자세한 내용을 원격으로 볼 것을 (0) | 2020.06.14 |
---|---|
[SQL] PostgreSQL의 ORDER BY 문제 - 자연 종류 (0) | 2020.06.14 |
[SQL] 널와 SQL 정렬 순서는 마지막 값 (0) | 2020.06.14 |
[SQL] MySQL의 쿼리의 정상화 악센트 문자 (0) | 2020.06.14 |
[SQL] 나는 바인드 매개 변수 경우는 mysql_real_escape_string를 사용해야합니까? (0) | 2020.06.14 |