547: The INSERT/UPDATE/DELETE statement conflicted with the FOREIGN KEY / CHECK constraint(INSERT/UPDATE/DELETE 语句与 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(事务(进程 ID)与另一个进程在锁资源上发生死锁,已被选为死锁牺牲者)
- 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(已超过锁请求超时时段)