我有两个共享一对一关系的表(事实上它是一对一的关系,但我将它作为一对一使用)。具有外键的表具有将外键设置为NULL的现有记录。我想写一个TSQL脚本,它会在第一个表中为每个记录添加一个默认记录,并更新第一个与新记录相关的外键?知道怎么做这个吗?
我想创建一个脚本,这样我不仅可以更新我的开发数据库,还可以在发布我的新版本时更新。
感谢。
编辑:
进一步修改:
我将使用文字插入默认值。我不能更具体。这是一个非常简单的场景,涉及两个表之间的一对多关系。
更进一步的修改:
我属于各种NDA。我可以花时间模拟一个示例情况。我需要在上面的表1中创建记录,一个用于表2中的每个记录,然后将表1中的密钥设置为表2中相关记录中的外键。这似乎是常见的事情。
我认为解决方案是创建一个临时表,但我不确定如何处理细节。有没有办法插入临时表并将插入的表的标识保存到临时表?
答案 0 :(得分:1)
做出一些假设,以下代码可以做到这一点:
insert into t2(keyval)
select keyval
from t1
where t1.t2id is null and
t1.keyval not in (select keyval from t2)
update t1
set t2id = t2.t2id
from t2
where t1.keyval = t2.keyval
假设是: