0

我有两张桌子:

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。

4

1 回答 1

0

我不认为你可以通过使用外键约束来实现这一点。我宁愿建议您在表 A 上使用插入触发器。插入触发器中的更新语句如下所示:

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
于 2017-11-14T12:40:52.160 回答