2016-06-09 2 views
0

소유자 ID가 플레이어 ID에 없으면이 쿼리를 실행하여 길드에서 행을 삭제하려고했습니다.저장된 함수/트리거의 테이블을 업데이트 할 수 없습니다.

DELETE FROM guilds WHERE ownerid NOT IN (SELECT id FROM players); 

는하지만 난이 오류 :이 이미 저장 기능/트리거를 호출 문에 의해 사용되기 때문에 저장 기능/트리거 테이블 '선수'를 업데이트 할 수 없습니다.

나는 또한 NOT EXISTSLEFT JOIN으로 시도했지만 동일한 결과가 나타납니다.

이 경우 어떻게해야합니까? 미리 감사드립니다.

+0

트리거에서이 코드를 실행하려고합니까? 아니면 길드원에 방아쇠를 당겼습니까? 길드에 대한 트리거 코드를 게시해야하는데, 그 오류를 생성하는 코드가 있습니다. – Solarflare

+0

SELECT를 사용하여 완벽하게 작동 함을 깨달았습니다. 그래서 나는 길드를 수동으로 소유주없이 지워야 할 것입니다. 너무 길지는 않습니다. 어쨌든 도움을 주심에 감사드립니다. – dohdle

답변

0

쿼리도 players 테이블을 삭제하고 실제로 모든 것을 삭제합니다. players 테이블이 어떻게 든 보호되고 있기 때문에, 당신은 그 오류를 만났습니다, 당신은 그것을 만질 필요가 없습니다;

DELETE FROM guilds WHERE ownerid != ALL(SELECT id FROM players); 
+0

동일한 오류가 발생합니다. – dohdle

관련 문제