• SQL插入语句插入自增的主键后,如何获取这个新增的主键值


    这是我遇到的一个面试题,看了一些文章后, 总结如下

    SQL Server中,需要返回你刚刚插入到一张表的identity(自增字段)的值, 有3个关键字,分别是

    @@IDENTITY

    SCOPE_IDENTITY

    IDENT_CURRENT  

    这3者之间有什么样的区别呢,我们来看看

    IDENT_CURRENT => 它针对的是特定的表,所以它的使用方式为 IDENT_CURRENT('Table Name'), 比如Person这张表,它的使用方式就是IDENT_CURRENT('Person'), 它会取出最后一次插入Person表的自增的值.  

    @@IDENTITY => 它返回当前会话中,所有作用域的任何表中,最后一个插入的自增标识值

    SCOPE_IDENTITY => 它返回当前会话中,当前作用域中的任何表中,最后一个插入的自增标识值

    我们来看看这两者的区别:  假如有2张关联表Person和Account, PersonId 和 AccountId分别是自增字段.

    在Person表中定义了一个INSERT的触发器, 当在Person表中插入一行时,触发器被激发,同时需要在Account表中插入一行

    这整个是1个会话,但上面涉及到了2个作用域: 第1个作用域是 在Person表中插入1行       第2个作用域是在Account表中插入1行

    这样,上面2个返回的值就不一样了 

    @@IDENTITY  => 返回当前会话,所有作用域中的任何表中,最后一个插入的自增标识值 => AccountId

    SCOPEN_IDENTITY => 它返回当前会话中,当前作用域的任何表中,最后一个插入的自增标识值 => PersonId

  • 相关阅读:
    window忘记密码怎么办
    VS2015配置Andriod开发环境
    记一次 thread.blocked.count 线程过多的问题排查
    Spring的事务初见
    对mybatis的Handler 从使用角度介绍
    最简单的RPC框架实现
    记一次mybatis bindingexception 问题排查
    Java线程池—ThreadPool简介
    [springMvc] 源码分析笔记(二)
    [tomcat] tomcat简析(一)
  • 原文地址:https://www.cnblogs.com/wphl-27/p/13802343.html
Copyright © 2020-2023  润新知