zoukankan      html  css  js  c++  java
  • SQLServer SELECT @@IDENTITY 遇到的坑

    经常在写存储过程的时候获取当前插入后的ID都会用  @@IDENTITY

    但是今天在用 @@IDENTITY的时候涉及到当前数据的插入会有insert触发器发生时,发现与实际插入的ID值对不上,网上查询了一下,用SCOPE_IDENTITY()就好了

    select SCOPE_IDENTITY()

    返回上面操作的数据表最后row的IDENTITY 列的值;

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

    SELECT   @@IDENTITY

    返回上面操作最后一个数据表的最后row的IDENTITY 列的值;
    创建表:

    create table T_User(F_ID int identity(1,1) not null,F_Name varchar(20) not null)

    插入数据:

    insert into T_User(F_Name) values('我是谁') Select SCOPE_IDENTITY()

    存储过程:

    CREATE PROCEDURE [dbo].[sp_User](@F_Name int) AS
    begin tran Insertinto_T_User
    Insert into  dbo.T_User(F_Name) values(@F_Name)
    Select SCOPE_IDENTITY()
  • 相关阅读:
    vue与自定义元素的关系
    vue用组件构建应用
    vue处理用户输入
    vue条件与循环
    vue声明式渲染
    Java编程的逻辑 (86)
    Java编程的逻辑 (85)
    Java编程的逻辑 (84)
    Java编程的逻辑 (83)
    Java编程的逻辑 (82)
  • 原文地址:https://www.cnblogs.com/ruanraun/p/9122896.html
Copyright © 2011-2022 走看看