2013-03-15 2 views
0

테이블이 두 개 있습니다 : users과 '청구서'가 있습니다. users에 외래 키로 bills 있음.삭제 캐스케이드가 작동하지 않습니다.

users 테이블에서 삭제할 때 bills 테이블에서 자동으로 행을 삭제하려고합니다. 내가 다음 쿼리를 사용하여 테이블을 변경하기 위해 여전히 청구서 테이블에서 항목을 삭제하지 않습니다.

내 ALTER 문은 다음과 같습니다 사용자 테이블의 ID를 기본 키

는, 내가 문제보다 해결하는 데 도움이 사전에 감사하시기 바랍니다 반면

ALTER TABLE bills 
ADD CONSTRAINT fk_pid 
FOREIGN KEY (pid) 
REFERENCES users(id) 
ON DELETE CASCADE 

여기 pid는 청구서 테이블의 외래 키입니다.

Create TABLE bills(
Your columns details 
------ 
------ 
ADD CONSTRAINT fk_pid 
FOREIGN KEY (pid) 
REFERENCES users(id) 
ON DELETE CASCADE 
) 

이 시도 ..

을 그 다음 작업뿐만 아니라이 일에 노력하지 않는이라면 사용 대신 ALTER의 생성

+1

이 시도 할 수있다 생각한다. – Devart

+0

사용은 표 청구서 만들기 대신 ALTER ADD 제약이 링크에서 찾아 보게 – Rahul

+0

DELETE CASCADE ON FOREIGN KEY (PID) 참조 사용자 (ID) fk_pid - [3 개 테이블에서 "DELETE CASCADE ON"MySQL의 외래 키를] (http://stackoverflow.com/questions/8878453/mysql-foreign-key-on-delete-cascade-across-3-tables/8878843#8878843). – Devart

답변

1

는, 그렇지 않으면 구문은 괜찮습니다. 두 테이블이 일치하지 않는 기본 키와 외래 키 문제가있는 경우 삭제 캐스케이드를 추가 할 수 없습니다. 해당 키 문제를 해결해야합니다. 사용자 테이블에 기본 키 값이없고 해당 ID를 사용하고 있습니다. 귀하의 지폐 테이블에 외래 키로 다음 청구서 테이블에서 그 계단에서 키를 제거하고 다음과 같은 추가 캐스케이드 스크립트를 시도하십시오 청구서 테이블에 폭포를 추가 할 수 없습니다. 나는 동일한 문제가 있었지만 나는이 방법을 사용하고 그것이 효과가. 희망

+1

CREATE TABLE 구문에는 최소한 열이 있어야합니다. – Devart

+0

내가 원하는 테이블을 다시 만들고 싶지 않아, 내 기존 테이블에 적용하고 싶습니다. 그래서 변경 명령을 사용하고 있습니다. – Danny

+0

내 두 번째 옵션도 시도해 봅니다. 키 불일치 문제라고 생각합니다. 청구서에있는 모든 외래 키를 확인하십시오. 테이블에 사용자 테이블의 기본 키가 있는지 여부 – Rahul

0

나는 this solution for create이 실제로 실종 된 것을 알아낼 수 있다고 생각합니다.

귀하의 질문과 함께 충분한 세부 사항을 제공하지 않았으므로 필요에 따라 사용자 지정해보십시오.

나는 그것이 당신의 CREATE TABLE 문

으로 뭔가를 할 OR, 사용자 CRAETE 표 요금을 제시해주십시오 ALTER1 또는 ALTER2

+0

내가 테이블을 다시 만들고 싶지 않다. 내 기존 테이블에 적용하고 싶다. 그래서 변경 명령을 사용하고있다. – Danny

+0

내 UPDATED 대답을 보라. 나는 ALTER를 사용하는 방법을 찾는 데 도움이 될 것이라고 생각한다. 테이블에 대한 충분한 정보를 제공하지 못했습니다. 당신은이 링크에서 너 자신을 알아 내야 만한다. 나는 그것이 당신을 도울 것이라고 희망한다. – DeltaCap

관련 문제