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 列值

  • 相关阅读:
    xcode开发笔记
    css样式笔记
    weex开发的笔记
    启动优化优秀文章和部分内容摘录
    备注Weex开发
    ARKit的使用示例
    数据结构:数据结构可分为几类?
    JAVAWEB应用模块(一)登录模块
    IDEA常用操作链接
    java中成员变量,局部变量,静态变量的辨析
  • 原文地址:https://www.cnblogs.com/_dragon/p/1732519.html
Copyright © 2011-2022 走看看