asp.net - 如何使用 Asp.Net 从 Sql 数据库获取最后创建的条目的 ID

标签 asp.net sql-server transactions

我将用一个例子来解释问题:

我的数据库中有两个表,分别命名为entry、tags

两个表中都有一个名为 ID_ENTRY 的列。当我将记录添加到表、条目时,我必须获取最后添加的记录的 ID_ENTRY 并将其添加到表、标签。我该怎么做?

最佳答案

执行此操作的唯一方法是使用多个语句。使用动态 sql,您可以通过用分号分隔查询字符串中的每个语句来实现此目的:

"DECLARE @ID int;INSERT INTO [Entry] (...) VALUES ...; SELECT @ID = scope_identity();INSERT INTO [TAGS] (ID_ENTRY) VALUES (@ID);"

确保将其放入事务中以防止并发问题并保持其全部原子性。如果需要,您还可以将其分成两个单独的查询,以在中间返回新的 ID 值;只需确保两个查询位于同一事务中即可。

另外:您在动态 SQL 中使用参数化查询,对吧?如果你不这样做,我会亲自过去用湿面条打你一万次,直到你悔改你的不安全行为。

关于asp.net - 如何使用 Asp.Net 从 Sql 数据库获取最后创建的条目的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/315017/

相关文章:

sql-server - TSQL合并: When not matched by target then insert if (condition)

java - 使用 Spring Data 和 MySQL 运行 2 个事务方法时出现死锁

c# - asp.net中调度任务的方法(不用写windows scheduler)

c# - 使用 Global.asax 添加并读取列表<t>

sql - 带参数的 Case 表达式失败

java - TransactionAttribute.REQUIRES_NEW 未使用容器管理事务在 EJB bean 中启动新事务

java - SQL Server 独占行锁 (XLOCK ROWLOCK) 使用 Spring Transactions 使用 Hibernate

c# - 生成后事件条件语句偏向于文本文件值

asp.net - Powershell 脚本创建一个 "sub"网站

sql-server - 什么 SqlDbType 映射到 varChar(max)?