![](/img/trans.png)
[英]How to add/update record in a table by stored procedure in SQL Server when added/updated happens in another table
[英]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.