SCOPE_IDENTITY的用法

SCOPE_IDENTITY   和   @@IDENTITY   的作用都是取得返回在当前会话中的任何表内所生成的最后一个标识值,简单的说就是在执行一条插入语句之后使用@@IDENTITY的全局变量,取得插入记录的ID号但是有个问题就是,@@IDENTITY是全局的,所以在他的功能会体现在所有作用域,一个操作,一个触发器,一个存储过程叫做一个作用域,这时候如果出现多个作用域的情况的时候,@@IDENTITY所取得的ID号就是最后一个作用域产生的结果。这时候我们要使用SCOPE_IDENTITY方法来作了。SCOPE_IDENTITY   只返回插入到当前作用域中的值;@@IDENTITY   不受限于特定的作用域。  
  使用方法:select   SCOPE_IDENTITY()   as   ID   from   [table]select   @@IDENTITY   as   ID   from   [table]  
  实例:  
        sql="SET   NOCOUNT   ON;insert   into   [Table](Item)   values('"&Item&"')"sql=sql&";select   @@IDENTITY   as   ID   from   [Table];SET   NOCOUNT   OFF;"  

在插入某些自增表的时候,需要将其打开:
 语法:SET   IDENTITY_INSERT   TableName   ON

转载于:https://www.cnblogs.com/daydayupanan/archive/2008/09/04/1283648.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 C# 中,可以使用以下方法来生成采番: 1. 使用自增列(IDENTITY):在 SQL Server 中,可以在表的某个列上设置自增属性,每次插入一条记录时,该列的值会自动递增。在 C# 中,可以使用 `SCOPE_IDENTITY()` 函数来获取插入记录时自增列的值。 2. 使用序列(SEQUENCE):在 SQL Server 2012 及以上版本中,可以使用序列来生成采番。可以使用 `NEXT VALUE FOR` 关键字来获取序列的下一个值。在 C# 中,也可以使用 `SCOPE_IDENTITY()` 函数来获取插入记录时序列的值。 在 C# 中,可以使用 ADO.NET 或 Entity Framework 等 ORM 框架来执行 SQL 语句。以下是使用 ADO.NET 的示例代码: ```csharp using System.Data.SqlClient; // 连接数据库 string connectionString = "Data Source=(local);Initial Catalog=MyDatabase;Integrated Security=True"; SqlConnection connection = new SqlConnection(connectionString); connection.Open(); // 执行插入语句 string insertSql = "INSERT INTO MyTable (Name, Age) VALUES (@Name, @Age); SELECT SCOPE_IDENTITY()"; SqlCommand command = new SqlCommand(insertSql, connection); command.Parameters.AddWithValue("@Name", "John"); command.Parameters.AddWithValue("@Age", 30); int id = (int)command.ExecuteScalar(); // 关闭连接 connection.Close(); ``` 以上代码中,`SCOPE_IDENTITY()` 函数用于获取插入记录时自增列或序列的值。 使用 Entity Framework 的示例代码: ```csharp using System.Data.Entity; // 定义实体类 public class MyEntity { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } // 连接数据库 string connectionString = "Data Source=(local);Initial Catalog=MyDatabase;Integrated Security=True"; DbContext context = new DbContext(connectionString); // 插入记录 MyEntity entity = new MyEntity { Name = "John", Age = 30 }; context.Set<MyEntity>().Add(entity); context.SaveChanges(); // 获取自增列或序列的值 int id = entity.Id; ``` 以上代码中,`SaveChanges()` 方法会执行插入语句,并且自动获取插入记录时自增列或序列的值。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值