多表操作问题,请大家帮个忙,谢谢

2025-01-01 00:09:20
推荐回答(2个)
回答1:

这是因为你在表a对表b的关系类型和表c对表b中添加了
1.实施参照完整性 2.级联更新相关字段 这两个关系类型。

也就是说在添加表b的时候,表b中的外键数据必须先添加到表a或表c中

因为是添加关系表数据,所以必须先在两个主表中添加数据后,才能再在关系表中添加,注意这里指的是关系表b中的外键数据,必须是两个主表中的主键。

比如往b表里里面的外键是ba,bc分别为int 型
则往b表里面插入一条记录为insert into b (ba,bc) values(4,5)时,必须保证a表里面的主键有4,c表的主键有5.

回答2:

问题的描述好抽象 - -!
你那个调试信息是因为表a和表c中引用了表b中的主键做了外键
举个例子,比如有两张表,一张员工表,一张部门表
员工表中有个字段叫部门号,它对应了部门表中的部门号字段,由于一个部门有多个员工,所以部门表对员工表是一对多的关系
假设现在想删除部门表中部门号为D001的记录,由于员工表中存在部门号为D001的员工,所以会提示
由于数据表'员工表'需要一个相关记录,不能添加或修改记录。
这个时候比较简单的解决方法是,先删除员工表中部门号为D001的所有记录,然后再删除部门表中部门号为D001的记录
还有种方法就是做个instead of delete触发器来实现