SQL 2005使用OUTPUT子句捕获数据插入时的标识值
2008-10-30 10:09:09 来源:WEB开发网Product表有个ID字段作为主键。Productnumber是Product表中一个自然键。 ProductsToInsert表的有ProductNumber字段以及另外记录标识值的字段,向产品表插入记录时将会在该字段中记录标识值。
上面语句中,只取了450条产品信息作为Product数据表的初始化数据,取了全部504条记录作为ProductsToInsert数据表的初始化数据。
用来插入新的产品的脚本,挺简单的,如下所示:
usetempdb
GO
INSERTProduct([Name],ProductNumber,ListPrice)
SELECT
[Name],ProductNumber,ListPrice
FROM
ProductsToInsertI
WHERE
NOTEXISTS(SELECT1
FROMProduct
WHEREProductNumber=I.ProductNumber)
该语句执行完后,在以前的表中不存在的54种产品将被插入到product表中。我们可以使用OUTPUT子句来得到所插入的行。具体语句如下所示:
INSERTProduct([Name],ProductNumber,ListPrice)
OUTPUTinserted.ProductID,
inserted.[Name],
inserted.ProductNumber,
inserted.ListPrice
SELECT
[Name],ProductNumber,ListPrice
FROM
ProductsToInsertI
WHERE
NOTEXISTS(SELECT1FROMProduct
WHEREProductNumber=I.ProductNumber)
该语句执行后,在客户端返回记录集
这差不多就是我们想要的了。我们得到了结果集的标识值,但我们没有利用这些数据,因为我们没法把它还原到原来的记录值。
我们还将需要增加两件事。首先,我们将需要储存此结果集保存到一个表值变量中。我会删除一些字段,使之更易于阅读;添加一个update语句以保存标识值。脚本如下所示:
- ››sql server自动生成批量执行SQL脚本的批处理
- ››使用linux中的quota教程
- ››sql server 2008亿万数据性能优化
- ››SQL Server 2008清空数据库日志方法
- ››sqlserver安装和简单的使用
- ››SQL Sever 2008 R2 数据库管理
- ››使用jxl生成带动态折线图的excel
- ››SQL SERVER无法安装成功,sqlstp.log文件提示[未发...
- ››Sql Server中通过父记录查找出所有关联的子记录
- ››SqlServer触发器、存储过程和函数
- ››SQL Server 中的事务(含义,属性,管理)
- ››Sqlite数据库插入和读取图片数据
更多精彩
赞助商链接