1
삭제 옵션에서 다른 외래 키를 테스트하고 있습니다. 나는 피곤한 캐스케이드, 아무런 행동도하지 않고, null을 설정했다. SQL Server에서 단지 오류를보고합니다 :SQL Server 2008 외래 키 삭제시 기본값이 작동하지 않습니다.
메시지 레벨 547, 수준 16, 상태 0, 줄 1 DELETE 문이 FOREIGN KEY 제약 조건 "FK_child_parent"과 충돌했습니다. 데이터베이스 "Test", 테이블 "dbo.Test_parent", 열 'no'에서 충돌이 발생했습니다. 명세서가 종료되었습니다.
create table Test_parent(
[no] int primary key
)
CREATE TABLE test_child(
SUB1 INT,
[NO] int DEFAULT 0 CONSTRAINT FK_child_parent REFERENCES Test_parent([no]) ON DELETE set default
)
insert into Test_parent values(1),(2)
insert into test_child values(1, 1)
insert into test_child values(2, 1)
delete from Test_parent
그렇다면 기본값 설정은 무엇입니까? 나는 그것이 null로 설정되지만 컬럼을 디폴트 값으로 설정할 것이라고 생각했다. set default가 의미가있는 예제를 만들 수 있습니까? – thotwielder
부모 테이블에 '0'레코드가 있으면 적절한 기본값이됩니다. 예 : 재고 시스템을 고려하십시오. 범주를 삭제하면 해당 범주의 제품이 사라지지 않고 여전히 존재할 수 있습니다. 따라서 영구 "기본"카테고리를 설정합니다. id = 0이므로 "나쁜 크리스마스 선물"카테고리를 삭제하면 할머니의 추악한 스웨터가 대신 "기본"카테고리로 이동합니다. –
우수! 감사. – thotwielder