자식 테이블의 데이터를 유지하기 위해 부모 테이블에서 행을 삭제할 때 수행 할 작업입니다. 의미ON DELETE NO ACTION 제약 조건 SQL Server 데이터베이스
가 나는 두 개의 열을 가진 부모 테이블 인 테이블 부서가있는 경우 - depNo
및 depName
, 3 열이있는 자식 테이블 - emNo
, emName
및 depNo (FK)
을.
부모 테이블의 행을 삭제할 수 있지만 내 테이블의 행을 유지할 수 싶습니다. (제 경우에는 라이센스와 연결되어 있으며 라이센스를 보유하고 있어도 추적하는 것이 좋습니다. 사용자는 이미 삭제됨).
부모 테이블의 행을 삭제하려고하면 오류가 발생하므로 ON DELETE NO ACTION
이 작동하지 않습니다.
CASCADE
및 SET NULL
은이 경우 좋지 않습니다.
SET Default
- 기본값을 설정할 수 없기 때문에 작동하지 않습니다. - 다를 수 있으며 100 % 확실합니다.
아이디어를 만드는 방법은 무엇입니까?
왜 하위 데이터를 보관해야합니까? 역사적인 테이블로 옮길 수 없습니까? – Oded
아니요, 하위 테이블에 머물기 위해 데이터가 필요합니다. 정확하게 역사적인 테이블과 같습니다. 따라서 부모 테이블의 행을 삭제하면 자식 테이블의 FK가 유지됩니다. – Apostrofix
그런 다음 자식 테이블에서 FK 제약 조건을 제거하고 일관성없는 데이터가 발생할 위험이 있습니다. 당신이 제안하는 것은 나쁜 데이터베이스 디자인입니다. 그런 식으로 자식 행을 다른 테이블로 옮겨야합니다. – Oded