2017-12-31 34 views
2

나는 A, B, C와 같은 3 개의 테이블을 가졌습니다. 관계는 A (ID), B (A.ID, C.ID) B는 A의 외래 키를 가지고 B는 또한 C의 외래 키char ID로 삭제 후 Mysql 트리거

B가 삭제 될 때 트리거를 만들고 싶을뿐만 아니라 C도 삭제합니다. 문제는 C의 데이터 형이 정수가 아닌, 그래서에서 ''여기에 수 나는이를 넣어하는 방법

BEGIN 
DELETE FROM C WHERE ID = Old.CID ; 
END 

을 B 삭제에 대한 내 트리거의이

DELETE FROM C WHERE ID = 'AB001'; 

같은 질의에 '내가'놓아야 내 방아쇠?

+0

왜 c.id를 정수로 만들지 않습니까? SQL 내부를 제외하고 c.id는 아무도 신경 쓰지 않습니다. – Strawberry

+0

@Strawberry C의 ID가 SQL에서 AI가 아니라 사용자 정의 되었기 때문에. 패턴이 있습니다 –

+0

고맙습니다. 제가 말하고자하는 것은 아마 그것이 필요가 없다는 것입니다. 공개적이고 인간 친화적 인 코드는 내부 ID와 관련이 없습니다. – Strawberry

답변

1

IDOld.TransactionID은 값이 아니며 열 이름입니다. 둘 중 하나를 인용 할 필요는 없습니다.

그렇다고해서 방아쇠가 잘못되었다고 생각합니다. 외래 키가 이미있는 경우이를 on delete cascade으로 정의하고 휠 재발송의 번거 로움을 덜어줍니다.

+0

미안하지만 잘못된 질문입니다. freign 키가있는 테이블이 있습니다. 내가 외래 키가있는 테이블에서 행을 삭제할 때 기본 키가있는 테이블을 삭제해야 할 때 만들고 싶습니다. 어떻게해야합니까? –

+1

나는 방아쇠가 잘못된 접근법처럼 보임에 동의한다. 캐스 캐 이드가 좋거나 간단한 삭제 일 것입니다. – Strawberry