547: The INSERT/UPDATE/DELETE statement conflicted with the FOREIGN KEY / CHECK constraint
SQL Server의미
문장이 FOREIGN KEY 또는 CHECK 제약 조건을 위반했다. 존재하지 않는 부모 행을 참조했거나, CHECK 규칙을 위반하는 값을 기록했거나, 아직 참조되고 있는 부모 행을 삭제하려 했다.
원인
FK: 삽입된 자식 행이 참조하는 부모 행이 존재하지 않음. DELETE/UPDATE: 삭제/변경하려는 부모 행에 종속된 자식 행이 있음. CHECK: 컬럼 값이 정의된 조건을 충족하지 않음.
해결 방법
부모 행을 먼저 삽입한 뒤 자식 행을 삽입한다. 삭제 시에는 종속 행을 먼저 제거하거나 적절한 경우 ON DELETE CASCADE를 정의한다. CHECK 위반은 값을 규칙에 맞춘다. 오류 텍스트의 제약 조건 이름으로 위반된 제약 조건을 식별한다.
같은 데이터베이스의 다른 항목
- 1205Transaction (Process ID) was deadlocked on lock resources with another process and has been chosen as the deadlock victim
- 2627Violation of PRIMARY KEY / UNIQUE KEY constraint. Cannot insert duplicate key in object
- 2601Cannot insert duplicate key row in object with unique index. The duplicate key value is ...
- 18456Login failed for user
- 8152String or binary data would be truncated
- 2628String or binary data would be truncated in table, column ...; truncated value
- 1222Lock request time out period exceeded