繁体   English   中英

在另一表中添加新记录时如何更新一个表中的外键

[英]How to update foreign keys in one table when new record is added in another table

我有两个表:

Table A (id int pk, value nvarchar(10), version nvarchar(5))

Table B (id2 int pk, value2 nvarchar(20), TableAID int fk(tableA.id), version nvarchar(5))

样本数据是:

Table A
-------
id | value | version
1    a       1
2    b       1      

Table B
-------
id | value | TableAID | version
1    c       1             1
2    d       1             1

现在,如果我在表A中插入具有新版本的新记录,则会得到以下结果:

Table A
-------
id | value | version
1    null    1
2    b       1
3    a       2      

表B应该看起来像这样:

Table B
-------
id | value | TableAID | version
1    c       3             1
2    d       3             1

(外键字段必须更改)。

如何做到这一点???? 我用游标填充数据和版本。

更新!

事实是,我必须为表A中的每个新版本的数据插入新行。不允许删除旧版本,必须使它们保持原样。 新版本将作为新数据插入,但是相同数据的旧版本会将其值更改为null。

如果我在表AI中插入新版本的数据,那么还将获得该值的新ID。 因此,我必须使用该新ID更新表B。

我认为您不能通过使用外键约束来实现。 我宁愿建议您在表A上使用插入触发器。插入触发器中的update语句如下所示:

UPDATE B
SET B.TableAID = I.ID
FROM B 
INNER JOIN A
 ON A.ID = B.TableAID
INNER JOIN INSERTED I
 ON I.VALUE = A.VALUE

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM