547: The INSERT/UPDATE/DELETE statement conflicted with the FOREIGN KEY / CHECK constraint(FOREIGN KEY / CHECK 制約との競合)
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(PRIMARY KEY / UNIQUE KEY 制約違反)
- 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(ロック要求のタイムアウト期間を超過)