【发布时间】:2010-12-01 18:54:21
【问题描述】:
在 SO 上其他人的帮助下,今天早上我敲定了几个表和存储过程,因为我离数据库程序员还很远。
有人介意看看这个并告诉我它是否是线程安全的吗?我想这可能不是 DBA/DB 开发人员使用的术语,但我希望你明白:基本上,如果这个 sp 正在执行并且另一个同时出现会发生什么?一个会干扰另一个吗?这甚至是 SQL/SP 中的问题吗?
CREATE PROCEDURE [dbo].[usp_NewTicketNumber]
@ticketNumber int OUTPUT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [TEST_Db42].[dbo].[TicketNumber]
([CreatedDateTime], [CreatedBy])
VALUES
(GETDATE(), SUSER_SNAME())
SELECT @ticketNumber = IDENT_CURRENT('[dbo].[TicketNumber]');
RETURN 0;
END
【问题讨论】:
-
我完全同意 gbn 的回答,但想补充一点,您可以自己轻松解决这个问题 - 您可以在一个循环中从两个或多个连接同时运行您的存储过程 mnay 次 (>1mln ),然后自己看看。
标签: sql sql-server sql-server-2005 tsql thread-safety