zoukankan      html  css  js  c++  java
  • SCOPE_IDENTITY、IDENT_CURRENT 、@@IDENTITY

    测试表的Dragon_Cate设计如图:

     

    其中CateID是一个自增量为1的主键。

     

    相应的添加记录的存储过程为:

    CREATE PROCEDURE [dbo].[Dragon_Cate_Add]

    (

        @CateName nvarchar(20),

        @CateIntro nvarchar(50),

        @Depth int,

        @SortOrder int,

        @Path varchar(50),

        @Visible bit

    )

    AS

    BEGIN

        INSERT INTO [Dragon_Cate]

    (

        [CateName],

        [CateIntro],

        [Depth],

        [SortOrder],

        [Path],

        [Visible]

    )

    VALUES

    (

        @CateName,

        @CateIntro,

        @Depth,

        @SortOrder,

        @Path,

        @Visible

    )

        --分别以以下三种类型做测试

        --SELECT Ident_current('Dragon_Cate')

        --SELECT @@IDENTITY

    --SELECT SCOPE_IDENTITY()

    END

    测试结果表明,如果表’Dragon_Cate’没有触发器或其他扩展时候(单单在‘Dragon_Cate’这个作用域中),三种类型返回的值都是一样的。

     

    现在扩大一下作用域, ’Dragon_Cate’增加触发器如下:

    CREATE TRIGGER testTrigger

       ON Dragon_Cate

       AFTER INSERT

    AS

    BEGIN

        SET NOCOUNT ON 

        Insert into Dragon_Notice(NoticeContent,PubDate,Visible,Latest,SortOrder)

        values('abc',getDate(),1,1,1)

    END

    这个触发器在为’Dragon_Cate’表增加一条记录后触发,为表’Dragon_Notice’增加一条记录,这里的表’Dragon_Notice’’Dragon_Cate’的设计是一样的,也有一个自增类型的主键.

    测试结果表明

    SELECT Ident_current('Dragon_Cate')SELECT @@IDENTITY返回的是最后触发器里’Dragon_Notice’表返回的自增变量,

    而SELECT SCOPE_IDENTITY()返回的是’Dragon_Cate’的自增变量.

    得出的结果:

    SELECT Ident_current('Dragon_Cate')SELECT @@IDENTITY返回的应该是当前会话中任何作用域内的最后生成的 IDENTITY 列值,

    SELECT SCOPE_IDENTITY()只能返回当前会话和当前作用域内的最后生成的IDENTITY 列值

  • 相关阅读:
    转:Windows 7下安装CentOS双系统
    STL学习总结之<迭代器>
    转:linux静态库与动态库
    指向类成员和成员函数的指针
    STL学习总结之<仿函数>
    转:Linux Crontab 定时任务 命令详解
    转: 解决 Redhat 出现”This system is not registered with RHN”更新
    IOS 判断设备屏幕尺寸、分辨率
    IOS 文件管理共通函数整理
    IOS 编译ffmpeg For SDK6.1,模拟器、armv7、armv7s均可使用
  • 原文地址:https://www.cnblogs.com/_dragon/p/1732519.html
Copyright © 2011-2022 走看看