假设我有一个包含3列的表
表:表1 rec_no - >主键(整数) 产品 prodlocation
我会尝试做一个记录转换
update table1 set rec_no = rec_no - 1
- >工作正常
update table1 set rec_no = rec_no + 1
- >失败,主键违规
据我所知,如果数据是主键的一部分,我们不应该操纵数据。
为了便于讨论,任何想法为什么第二个查询失败?我认为如果两个查询都失败了是可以接受的。
答案 0 :(得分:0)
您需要为这些外键设置ON UPDATE CASCADE:
ALTER TABLE bar
ADD CONSTRAINT FK_foo_bar
FOREIGN KEY (fooid) REFERENCES foo(id)
ON UPDATE CASCADE
然后您只需更新FK,并且引用字段也将作为交易的一部分进行更新:
UPDATE foo SET id = id + 1000
请注意,要更改约束,需要删除它们。