SQL SERVER 2005:在After Insert触发器中使用INSERT后,影响SCOPE_IDENTITY 问题
来源:互联网 发布:魔兽争霸mac版cd key 编辑:程序博客网 时间:2024/06/06 18:11
SQL SERVER 2005:在After Insert触发器中使用INSERT后,影响SCOPE_IDENTITY 问题
一、一点概念
当插入一条记录后,我们通常使用@@IDENTITY 等函数获取该表的自增量值。
在SQL SERVER中,给出了三个获取自增量值的函数:
IDENT_CURRENT 返回为某个会话和用域中的指定表生成的最新标识值。 @@IDENTITY 返回为跨所有作用域的当前会话中的某个表生成的最新标识值。 SCOPE_IDENTITY 返回为当前会话和当前作用域中的某个表生成的最新标识值。在上述三种方法中,只有IDENT_CURRENT 需要指定表:
IDENT_CURRENT( 'table_name' )
然而在实际使用中,我们通常喜欢使用SCOPE_IDENTITY 来获取自增量值。
二、问题的产生
在数据库的操作中,为了完成数据关连关系,通常使用触发器来完成。
例如,我们在一个表(Tab1)中定义了一个触发器,当向该表(Tab1)插入一条记录后,我们希望根据插入的条件,向另一张表(Tab2)插入与该表相关的数据。
下面是一个简单的示例:
CREATE TRIGGER [dbo].[Test]
ON [dbo].[Tab1]
AFTER INSERT
AS
BEGIN
INSERT INTO TAB2(
/*...相关列名...*/
) SELECT /*...相关列名...*/ FROM inserted
WHERE /*...相关条件...*/
上面是一个简单的触发器。
我们使用下列方法,向TAB1插入一行,并获取该表的自增量值:
INSERT INTO Tab1(
/*...相关列名...*/
) VALUE(
/*...相关值...*/
);
SELECT SCOPE_IDENTITY
如果加入了上述的触发器,我们将无法获得Tab1的正确的自增量值。因为该自增量的值,在触发器中,被改变成了Tab2的自增量值。
正确的方法应该是(注意兰色部分):
INSERT INTO Tab1(
/*...相关列名...*/
) VALUE(
/*...相关值...*/
);
SELECT IDENT_CURRENT('Tab1')
- SQL SERVER 2005:在After Insert触发器中使用INSERT后,影响SCOPE_IDENTITY 问题
- 在Sql Server触发器中判断操作是Insert还是Update还是Delete
- 在Sql Server触发器中判断操作是Insert还是Update还是Delete
- 在Sql Server触发器中判断操作是Insert还是Update还是Delete
- SQL server触发器中 update insert delete 示例
- oracle触发器使用:after insert 与before insert的简单使用注意
- 在SQL Server中使用merge同时进行Insert,Update和Delete操作
- MS SQL Server中使用BULK INSERT点滴
- SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete)
- SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete)
- SQL Server 2008中SQL增强之三:Merge(在一条语句中使用Insert,Update,Delete)
- sqlite3 update/insert/insert or replace对触发器的影响
- 如何在SQL Server中使用触发器
- 如何在SQL Server中使用触发器
- 如何在SQL Server中使用触发器
- SQL Server中,插入数据insert注意事项
- Linq to Sql 中使用Instead of insert触发器报错处理
- Ubuntu中Vi在insert模式不能使用方向键问题
- IE与Firefox的CSS兼容参考
- TCP的三次握手过程
- 安全测试工具
- CSS常用网站布局实例
- PDF 转 SWF 在线阅读
- SQL SERVER 2005:在After Insert触发器中使用INSERT后,影响SCOPE_IDENTITY 问题
- 8个简单实用的CSS秘诀
- Win7双启动引导修复
- sql server 学习小记1
- MySQL-front解决中文乱码的问题
- FCKeditor 2.6在ASP.NET中的配置方法(附源码下载)
- MTK平台锁网
- [转]天涯开源key-list类型内存数据引擎——Memlink
- 开源IM工具编译与环境搭建攻略