表与表直接由于存在外键约束而导致删除操作失败
2011-07-26 16:17
465 查看
如果表A的主关键字是表B中的字段,则该字段称为表B的外键,表A称为主表,表B称为从表。外键是用来实现参照完整性的。
在我的数据中,有两张表,一张是light,一张是collector.
下图是light表,里面的字段collectorid是表collector的主键,对于light表来说,collectorid是它的外键:
下图是collector表,collectorid是这个表的主键,
在Microsoft SQL Server Management Studio中,建立一个外键的步骤如下图所示:
在需要建立外键的表上(light)上,右键->选择新建外键:
选择表和列规范:
选择主键表为collector,外键表为light(为什么light是外键表呢??因为对light来说,collecrorid是它的外键)。
选择删除规则为级联(casecade),如果不选择级联会出现什么问题呢?考虑下面的场景,现在需要删除collector中某些数据,但是由于collectorid是light表的外键,也就是light还在引用要删除数据的collectorid,这样就会出现删除失败的情况,为了避免这种情况出现,我们就要选择外键的删除规则为级联(cascade)方式,这样在删除collector表中的数据时,所以引用colletorid的light中的数据就会被自动的删除。
在我的项目中出现的问题如下图所示:
上面页面显示的数据就是来自于collector,由于当时light选择了collector的collectorid作为它的外键,但是有没有在建立light外键的时候选择级联方式,所以就出现了删除失败的情况。
在我的数据中,有两张表,一张是light,一张是collector.
下图是light表,里面的字段collectorid是表collector的主键,对于light表来说,collectorid是它的外键:
下图是collector表,collectorid是这个表的主键,
在Microsoft SQL Server Management Studio中,建立一个外键的步骤如下图所示:
在需要建立外键的表上(light)上,右键->选择新建外键:
选择表和列规范:
选择主键表为collector,外键表为light(为什么light是外键表呢??因为对light来说,collecrorid是它的外键)。
选择删除规则为级联(casecade),如果不选择级联会出现什么问题呢?考虑下面的场景,现在需要删除collector中某些数据,但是由于collectorid是light表的外键,也就是light还在引用要删除数据的collectorid,这样就会出现删除失败的情况,为了避免这种情况出现,我们就要选择外键的删除规则为级联(cascade)方式,这样在删除collector表中的数据时,所以引用colletorid的light中的数据就会被自动的删除。
在我的项目中出现的问题如下图所示:
上面页面显示的数据就是来自于collector,由于当时light选择了collector的collectorid作为它的外键,但是有没有在建立light外键的时候选择级联方式,所以就出现了删除失败的情况。
相关文章推荐
- Hibernater由于外键设置不为空,导致在主键级联删除时失败解决办法!
- 无法确定依赖操作的有效顺序。由于外键约束、模型要求或存储生成的值,因此可能存在依赖关系
- 无法确定依赖操作的有效顺序。由于外键约束、模型要求或存储生成的值,因此可能存在依赖关系。
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- 由于外键约束无法删除数据
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- 没有终结点在侦听可以接受消息的 http://******/Service.asmx。 这通常是由于不正确的地址或者 SOAP 操作导致的。如果存在此情况, 请参见 InnerExc
- 由于某种错误导致数据表数据巨大(千万级别),删除后对该数据操作速度极慢的原因及解决方法
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- 由于虚拟机非正常关机导致开启模块diskearly的操作失败
- mysql操作说明,插入时外键约束,快速删除
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- 由于外键约束导致mysql同步出问题的故障
- Oracle12C--主外键约束删除数据问题--级联操作(九)
- jdbcTemplate操作MYSQL数据库时有外键约束无法插入或删除