【发布时间】:2011-09-17 09:28:53
【问题描述】:
我正在使用一个类文件来更新我的表。我正在插入或更新表,并且在每次更新或插入之后,我正在调用一个存储过程来保存表的最后更新 ID。但是一旦这个存储过程运行,它就永远不会释放资源。它始终在后台执行。为什么会发生这种情况,我该如何阻止它? 这是存储过程:-
Create procedure [dbo].[Updlastusedkey]
(
@tablename varchar(50)
)
as
Begin
DECLARE @sql varchar(300)
SET @SQL='UPDATE primarykeyTab SET lastKeyUsed = ISNULL(( SELECT Max(ID) from '+@tablename +'),1) WHERE Tablename='''+@tablename +''''
print @SQL
EXEC(@SQL)
END
【问题讨论】:
-
不释放资源是什么意思?你怎么知道的?你的过程看起来不错。
-
附带问题:此查询如何找到最后更新的行?
-
假设我在表 A 中插入一行然后调用存储过程,在运行 SP 之后,当我尝试对表 A 进行任何操作时,它不允许。虽然我可以访问其他表。
-
@knvn:-我正在使用它作为最后插入的 ID..抱歉更新单词
-
多个表使用基本相同的主键列?这听起来不是一个好主意。但是你为什么不使用 SCOPE_IDENTITY() 函数呢?
标签: sql sql-server-2005 stored-procedures