세 번째 테이블 ID를 기반으로 두 개의 종속 테이블에서 모든 행을 삭제하려고합니다.[MySQL] : 두 개의 종속 테이블에서 행을 삭제
테이블 구조는 :
Transaction
-Transaction_ID (primary)
-Timestamp
Purchase
-Item_ID
-Transaction_ID
-Purchase_ID (primary)
Item
-Item_ID (primary)
-Client_ID
나는 항목에서 CLIENT_ID 일치 거래/구매의 모든 행을 삭제하고 싶습니다. 심지어 내가 그 주위에 내 초보자의 마음을 포장 할 수 있습니다 ... 아주 간단 소리 ...
DELETE dbName.t FROM
dbName.Transaction t
JOIN
dbName.Purchase p
ON
p.Transaction_ID = t.Transaction_ID
JOIN
dbName.Item i
ON
p.Item_ID = i.Item_ID
WHERE
Client_ID = 1
아니 ...
내가이 오류 foreign key constraint fails...
를 얻을 - 당신이 놀랄되지 않습니다의 많은 분들 해요.
구매시 t.Transaction_ID가 사용되는 문제입니까? - (따라서이 외래 키가 실패합니다.)
또는이 테이블에 다른 t.Transaction_ID 종속 데이터가있을 가능성이 있습니다 (발견되지 않았습니다).
편집 : COMPLETE ERROR
Cannot delete or update a parent row: a foreign key constraint fails
(`ItemTracker_dbo/Purchase`, CONSTRAINT `FK_Purchase_Transaction`
FOREIGN KEY (`Transaction_ID`) REFERENCES `Transaction` (`Transaction_ID`)
ON DELETE NO ACTION ON UPDATE CASCADE)
내게 반대로 보인다 - 거래는 구매에 달려있다. (나는 client_id가 없으면 그것을 쓸 수 없다) –
@Derek Adair : @AlbertEin이 처음으로 질문에 올바르게 대답 한 이래로 나의 포스트는 크게 보완해야했다. 도움이되기 전에 그의 대답을 수락하는 것을 고려하십시오. – Tomalak
신중하게 검토하지 않으면 구매 테이블에 Transaction_ID가 있습니다. 먼저 트랜잭션을 삭제하면 구매 테이블에 존재하지 않는 유효하지 않은 Transaction_ID가 일시적으로 포함됩니다. – MindStalker