如何将一个表中的记录插入并与第二个表中的现有记录相关联?

时间:2012-07-05 15:19:50

标签: sql-server-2008 tsql

我有两个共享一对一关系的表(事实上它是一对一的关系,但我将它作为一对一使用)。具有外键的表具有将外键设置为NULL的现有记录。我想写一个TSQL脚本,它会在第一个表中为每个记录添加一个默认记录,并更新第一个与新记录相关的外键?知道怎么做这个吗?

我想创建一个脚本,这样我不仅可以更新我的开发数据库,​​还可以在发布我的新版本时更新。

感谢。

编辑:

enter image description here

进一步修改:

我将使用文字插入默认值。我不能更具体。这是一个非常简单的场景,涉及两个表之间的一对多关系。

更进一步的修改:

我属于各种NDA。我可以花时间模拟一个示例情况。我需要在上面的表1中创建记录,一个用于表2中的每个记录,然后将表1中的密钥设置为表2中相关记录中的外键。这似乎是常见的事情。

我认为解决方案是创建一个临时表,但我不确定如何处理细节。有没有办法插入临时表并将插入的表的标识保存到临时表?

1 个答案:

答案 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

假设是:

  1. 在这种情况下,这两个表都没有被修改。
  2. t2.t2id是一个标识列,因此会在插入
  3. 上自动分配ID
  4. 第一个表包含id和匹配值