흥미로운 상황이 있습니다. a.name (하위 테이블)에서 b.name (상위 테이블)까지 외래 키가 있습니다. b.name에는 고유 제한 조건이 없으므로 중복 값이 들어있을 수 있습니다. 내가 b.name 두 번에 이름이 '밥'을 넣어, 다음 a.name에 넣어 경우MySQL : 두 부모를 참조하는 외래 키
, 나는 더 이상 삭제하거나 테이블 B의 '밥'의 예 중 하나를 업데이트 할 수 있습니다. 두 경우 모두 테이블 b의 행을 삭제/업데이트하면 a.name과 b.name을 연결하는 FKey가 실패합니다.
이제는 이해가되지만 이 아니고 다른 인스턴스 인 'bob'이 테이블 b에만있는 경우에만 FKey에게 실패 할 것이라고 말하고 싶습니다. 따라서 b.name에 'bob'이라는 인스턴스가 여러 개있는 경우 마지막 인스턴스를 제외한 모든 인스턴스를 변경/삭제할 수 있습니다.
[참고 명백한을하고 그것이 내가 작성하지 않은 응용 프로그램에서 '정의되지 않은 동작'의 원인이되므로 b.name에 고유 제한 조건이 작동하지 않습니다 및 추가]
어떤 아이디어? 스트레이트 http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html
...Additionally, MySQL and InnoDB require that the referenced columns be indexed for performance. However, the system does not enforce a requirement that the referenced columns be UNIQUE or be declared NOT NULL.The handling of foreign key references to nonunique keys or keys that contain NULL values is not well defined for operations such as UPDATE or DELETE CASCADE. You are advised to use foreign keys that reference only UNIQUE and NOT NULL keys....
에서
나는 그것을 놓쳤다. 감사. – dordal