• @@IDENTITY,SCOPE_IDENTITY,IDENT_CURRENT,吉祥3宝


    @@IDENTITY,SCOPE_IDENTITY,IDENT_CURRENT,吉祥3宝

    总结:
      日常开发个人常用SCOPE_IDENTITY(),因为SCOPE只在当前的作用域返回值.
      实际应用中应根据3个函数作用而定.

    定义:
    @@IDENTITY
    返回最后插入的标识值的系统函数。

    SELECT @@IDENTITY as 'IDENTITY';

    IDENT_CURRENT

    返回为某个会话和作用域中指定的表或视图生成的最新的标识值。

    SELECT IDENT_CURRENT('表名') as 'IDENT_CURRENT';

    SCOPE_IDENTITY

    返回插入到同一作用域中的标识列内的最后一个标识值。一个范围是一个模块:存储过程、触发器、函数或批处理。因此,如果两个语句处于同一个存储过程、函数或批处理中,则它们位于相同的作用域中。

    SELECT SCOPE_IDENTITY() as 'SCOPE_IDENTITY';

    区别:

    SCOPE_IDENTITY 只在当前作用域内返回值,而 @@IDENTITY 不限于特定的作用域。

    IDENT_CURRENT 不受作用域和会话的限制,而受限于指定的表。IDENT_CURRENT 可以返回任何会话和任何作用域中为特定表生成的标识值。

    备注:

    @@IDENTITY 返回最后生成的标识值。如果语句触发了一个或多个触发器,该触发器又执行了生成标识值的插入操作,那么,在语句执行后立即调用 @@IDENTITY 将返回触发器生成的最后一个标识值。如果对包含标识列的表执行插入操作后触发了触发器,并且触发器对另一个没有标识列的表执行了插入操作,则 @@IDENTITY 将返回第一次插入的标识值。

    事例:

    GO

    IF EXISTS( SELECT * FROM Admin_User)
    BEGIN
      DROP TABLE  Admin_User;
    END

    IF EXISTS( SELECT * FROM Test_Table)
    BEGIN
      DROP TABLE  Test_Table;
    END

    GO
    CREATE TABLE Admin_User
    (
        Account_ID                    int IDENTITY(1,1) not null,             -- 用户ID
        Login_Account                 nvarchar(30) not null,                  -- 用户帐号
        Constraint PK_Admin_User Primary key(Account_ID)
    );

    GO
    CREATE TABLE Test_Table
    (
        Test_ID                       int IDENTITY(100,1) not null,           -- 测试ID
        Constraint PK_Test_Table Primary key(Test_ID)
    );

    GO
    --创建触发器
    CREATE TRIGGER tigerAdmin_User_INSERT ON Admin_User FOR INSERT
    AS
    BEGIN
       INSERT Test_Table DEFAULT VALUES
    END;
    GO

    --插入数据
    INSERT Admin_User(
            Login_Account                           -- 用户帐号
            )
    VALUES(
            'techtjh'                          -- 用户帐号
            );

    SELECT @@IDENTITY as 'IDENTITY';

    SELECT SCOPE_IDENTITY() as 'SCOPE_IDENTITY()';

    SELECT IDENT_CURRENT('Test_Table') as 'IDENT_CURRENT(Test_Table)';

    SELECT IDENT_CURRENT('Admin_User') as 'IDENT_CURRENT(Admin_User)';

    --则执行结果为 100,1,100,1

    --新打开查询窗口 执行以下代码

    SELECT @@IDENTITY as 'IDENTITY';

    SELECT SCOPE_IDENTITY() as 'SCOPE_IDENTITY()';;

    SELECT IDENT_CURRENT('Test_Table') as 'IDENT_CURRENT(Test_Table)';

    SELECT IDENT_CURRENT('Admin_User') as 'IDENT_CURRENT(Admin_User)';

    --则执行结果为 NULL,NULL,100,1

  • 相关阅读:
    利用python进行数据分析之数据聚合和分组运算
    利用python进行数据分析之绘图和可视化
    利用python进行数据分析之数据规整化
    利用python进行数据分析之pandas库的应用(二)
    利用python进行数据分析之pandas库的应用(一)
    利用python进行数据分析之数据加载存储与文件格式
    git 本地无版本仓库推送到远程新仓库命令
    Docker 部署Dotnet Core MVC项目
    css 单行图片文字水平垂直居中汇总
    IL命令初学者要知道的事
  • 原文地址:https://www.cnblogs.com/skyshenwei/p/1651900.html
Copyright © 2020-2023  润新知