0

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

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

谢谢。

编辑:

在此处输入图像描述

进一步编辑:

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

进一步编辑:

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

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

4

1 回答 1

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 是一个标识列,因此在插入时会自动分配 id
  3. 第一个表同时包含 id 和要匹配的值
于 2012-07-05T16:05:33.547 回答