首页 新闻 会员 周边

SQL 关联更新 约束字段的问题

0
悬赏园豆:20 [已关闭问题] 关闭于 2014-02-18 17:28

有3个表 rptdata   rptcell  rptcol ,都有一个字段 rptcolid

在这3个表中,这个字段是相互约束的,如果单独写SQL更新语句会提示约束



大概要更新的语句是这样
update rptcell set rptcolid='95' where rptid='0707' and rptcolid='56'

update rptcol set rptcolid='95' where rptid='0707' and rptcolid='56'

update rptdata set rptcolid='95' where rptid='0707' and rptcolid='56' 

其他2个表也是要更新这个字段,where条件也是一样

除了删除约束更新,是否有其他方法,比如一个SQL语句同时,更新这3个表的这个字段【rptcolid】。

希望大家帮帮忙,谢谢了

问题补充:

触发器能不能实现?

戴眼镜的乌龟的主页 戴眼镜的乌龟 | 初学一级 | 园豆:21
提问于:2013-09-15 21:27
< >
分享
所有回答(3)
0

看上面的错误提示,rptcol是主表,rptcolid是主键,rptdata和rptcell都有关联到rptcol的外键rptcolid

有一个方法是在rptcol的外键关系里设置“更新规则”为级联,然后update rptcol的rptcolid字段,这个时候将会自动把rptcell和rptdata中对应的rptcolid字段自动更新

不过还是建议不要用可能会被更改字段作为主键/外键

诶碧司 | 园豆:1912 (小虾三级) | 2013-09-15 21:52

级联更新不能解决?

支持(0) 反对(0) 诶碧司 | 园豆:1912 (小虾三级) | 2013-09-16 09:10
0

1、要么干掉外键,要么满足约束。

幻天芒 | 园豆:37185 (高人七级) | 2013-09-15 21:57

最好别用触发器了~

支持(0) 反对(0) 幻天芒 | 园豆:37185 (高人七级) | 2013-09-16 20:06
0

图看不到呢,不过确实没有方法,一条语句的update不能同时更新多个表,不想这样的话,就只能删掉外键了。

不知道为啥,我对数据库的约束挺反感的。我一般都使用int类型的字段代表某个表的外键,这样可以避免好多级联上的问题。

thomheron | 园豆:202 (菜鸟二级) | 2013-09-15 22:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册