讨论:更新主键值

时间:2014-01-14 23:59:38

标签: sql ms-access

假设我有一个包含3列的表

表:表1 rec_no - >主键(整数) 产品 prodlocation

我会尝试做一个记录转换

update table1 set rec_no = rec_no - 1 - >工作正常

update table1 set rec_no = rec_no + 1 - >失败,主键违规

据我所知,如果数据是主键的一部分,我们不应该操纵数据。

为了便于讨论,任何想法为什么第二个查询失败?我认为如果两个查询都失败了是可以接受的。

1 个答案:

答案 0 :(得分:0)

ON UPDATE CASCADE

您需要为这些外键设置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

请注意,要更改约束,需要删除它们。