我将从另一个表B向表a中插入多条记录.有没有一种方法可以在不使用光标的情况下获取表a记录的标识值并更新表B记录?

Create Table A
(id int identity,
Fname nvarchar(50),
Lname nvarchar(50))

Create Table B
(Fname nvarchar(50),
Lname nvarchar(50),
NewId int)

Insert into A(fname, lname)
SELECT fname, lname
FROM B

我正在使用MS SQL Server 2005.

推荐答案

MBelly在金钱上是正确的——但是触发器总是会try 更新表B,即使这不是必需的(因为您也在从表C插入?).

Darren在这里也是正确的,你不能得到多个身份作为结果集.您可以 Select 使用光标并获取插入的每一行的标识,或者使用Darren在插入前后存储标识的方法.只要您知道标识的增量,这应该是有效的,只要您确保表在所有三个事件中都被锁定.

如果是我,而不是时间紧迫,我会用光标.

Sql相关问答推荐

SQL从同一表连接列

用于平均多个数据并与一个数据点进行比较以判断偏移量的SQL查询

使用来自不同深度的嵌套组的值执行计算的干净方法?

使用`lag()`获取上一个时间戳

没有循环的SQL更新多个XML node 值

Ffltter&;Dart SQL Lite包:是否可以在一个查询中执行多条更新语句(每次执行不同的WHERE参数)

UPDATE查询中的乐观锁

按分隔符和总和分析字符串

使用列表作为参数进行 Select ,如果为空,则在PostgreSQL中不使用参数进行 Select

如何将我的联接数据放入每个用户每月多行的列中?

在SQL Server中设置关联对象的有效JSON格式

按连续相等值分组排序

按行值出现的顺序对行值进行分组

在 postgres 中插入或更新 jsonb 数组的对象

什么是 100.它与 100 有什么区别?

如何在 JSONB 数组的每个对象中添加新的键值对- PostgreSQL

多行状态下的分组查询判断状态

使用in和and运算符过滤记录的条件

Postgresql 需要一个查询,为我提供所有没有具有特定状态值的子元素的父母

如何对 SQL 表中的连续时间戳进行分组?