OutPut子句的使用限制

Output子句很方便,多数情况下可以省略了更新后插入或者删除后插入操作表,将2个语句变成1个语句操作。不管从语句美观还是效率上都是有不错的提升,

但是对于Output自身,也是有一些限制的。

从文档上看。主要有以下三点需要注意

1 Output into 的对象不能含有触发器

2 Output into 的对象不能是有外键的任何一方

3 Output into 的对象不可以带有Check约束或者启用的规则

带有这3种条件的对象(不管是表,还是临时表,还是表变量)都不能成为Output Into 的目标对象。

所以,假如在开发过程中遇到output into 和以上3个条件之前的不兼容,那要不就考虑看下能否从逻辑上去控制数据完整性,而非通过系统的这些功能。

要不就放弃使用 output 子句。使用其他方法来改了

如果说得不准确,请各位轻拍

时间: 2024-10-22 23:59:19

OutPut子句的使用限制的相关文章

说一下output子句

Output子句日常灰常有用,而且用的地方也挺多,但是确好多时候被我们忽视,今天我就也简单扫盲一下这个语句的用法. Output子句 返回受 INSERT.UPDATE.DELETE 或 MERGE 语句影响的各行中的信息,或返回基于受这些语句影响的各行的表达式. 这些结果可以返回到处理应用程序,以供在确认消息.存档以及其他类似的应用程序要求中使用. 也可以将这些结果插入表或表变量. 另外,您可以捕获嵌入的 INSERT.UPDATE.DELETE 或 MERGE 语句中 OUTPUT 子句的结

output子句用法 output inserted.autoId

我遇到的问题: sql语句:insert into dbo.TblPerson(uName,age,height,gender) values (@uName,@age,@height,@gender) 同时用ExecuteScalar返回首行首列,总是显示“未将对象引用设置到对象的实例.”结果看代码案例才知道sql语句改为:insert into TblPerson output inserted.autoId values(@name,@age,@height,@gender)就可以了.ou

TSql Output 用法

第一部分:TSql Output 关键字有两种应用场景 1,作为存储过程的参数类型,从存储过程中返回数据 2,返回受 INSERT.UPDATE.DELETE 或 MERGE 语句影响的各行中的信息,可以捕获嵌入到 INSERT.UPDATE.DELETE 或 MERGE 语句中 OUTPUT 子句的结果,然后将这些结果插入目标表. 3,语法 <OUTPUT_CLAUSE> ::= { [ OUTPUT <dml_select_list> INTO { @table_variabl

(转载)output经典使用

OUTPUT是SQL SERVER2005的新特性.可以从数据修改语句中返回输出.可以看作是"返回结果的DML".INSERT,DELETE,UPDATE均支持 OUTPUT子句.在OUTPUT子句中,可以引用特殊表inserted和deleted.使用inserted和deleted表与在触发器中使用的非常相似. 在INSERT,DELETE,UPDATE中OUTPUT的区别 1.对于INSERT,可以引用inserted表以查询新行的属性. 2.对于DELETE,可以引用delet

基本的查询流【MSSQL】

4个DML(Data Manipulation Language)命令(SELECT INSERT UPDATE DELETE) 查询语法有一个特有的固定顺序 SELECT - FROM - WHERE - GROUP BY - HAVING - ORDER BY 3.FROM子句数据源 本地SQL Server表.(单个SQL SELECT语句中可访问的表的数量不能超过256个) 子查询作为派生表,也称为子选择或内联视图. 视图或存储的SELECT语句. 表值用户定义的函数返回行和列. 分布式

SQL增强之Merge

SQL Server 2008提供了一个增强的SQL命令Merge,用法参看MSDN:http://msdn.microsoft.com/zh-cn/library/bb510625.aspx 功能:根据与源表联接的结果,对目标表执行插入.更新或删除操作.例如,根据在另一个表中找到的差异在一个表中插入.更新或删除行,可以对两个表进行同步. 我们看一个例子,假如,有一总产品列表,一个分店产品列表,需要从分店添加产品时更新总产品列表. 总产品表,分店产品表结构完全一致: 复制代码代码如下: if O

9、SQL Server 操作数据

插入数据 使用Insert Into 插入 if(exists(select * from sys.databases where name = 'webDB')) drop database webDB go --创建数据库 create database webDB on primary ( name = 'webDB', filename='d:\webDB.mdf', size = 5mb, maxsize=unlimited, filegrowth=10% ) log on ( nam

SQLServer 2008中SQL增强之三 Merge(在一条语句中使用

SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete) SQL Server 2008提供了一个增强的SQL命令Merge,用法参看MSDN:http://msdn.microsoft.com/zh-cn/library/bb510625.aspx 功能:根据与源表联接的结果,对目标表执行插入.更新或删除操作.例如,根据在另一个表中找到的差异在一个表中插入.更新或删除行,可以对两个表进行同步. 我们看一个例子,假如,有一总产品列表,一

SQLServer : EXEC和sp_executesql的区别

MSSQL为我们提供了两种动态执行SQL语句的命令,分别是EXEC和sp_executesql.通常,sp_executesql则更具有优势,它提供了输入输出接口,而EXEC没有.还有一个最大的好处就是利用sp_executesql,能够重用执行计划,这就大大提供了执行性能(对于这个我在后面的例子中会详加说明),还可以编写更安全的代码.EXEC在某些情况下会更灵活.除非您有令人信服的理由使用EXEC,否则尽量使用 sp_executesql. EXEC的使用 EXEC命令有两种用法,一种是执行一