suj*_*lil 20 sql-server cursors
我正在创建一个临时表 ( #myTable
) 并使用游标。当并发用户通过我的应用程序访问游标时,这会产生问题吗?它是否允许我创建具有相同名称的单独临时表?
以下是示例代码:
Open cursor;
Fetch Next from cursor into @Variable_Temp_Table_Name;
Create table #myTable(pk int)
While @@Fetch_Status = 0
Begin
Fetch Next from cursor into @Variable_Temp_Table_Name;
End
Run Code Online (Sandbox Code Playgroud)
M.A*_*Ali 23
SQL Server 总是在临时表名的末尾附加一些随机数(在后台),当并发用户在他们的会话中创建同名的临时表时,sql server 会在 tempdb 中创建多个临时表。
我#TempTable
在 SSMS 的三个不同会话中创建了 3 个临时表,现在如果我转到 tempdb,我可以看到在那里创建的临时表,每个临时表的名称后附有一个随机(唯一)字符串。
Aar*_*and 12
是的,多个应用程序将获得自己的#temp 表副本。这就是使用#temp 表的意义所在,因为每个并发会话都有自己的隔离对象。这与您是否将游标与 #temp 表结合使用无关(尽管我怀疑无论如何都不需要游标 - 您没有包含足够的代码来专门评论)。
编辑以包含评论:
关于使用#temp 表的另一件事是,如果您需要向它们添加约束,让 SQL 服务器生成名称,否则即使该表对会话来说是唯一的,约束也不会,第二个实例将错误地创建桌子。
归档时间: |
|
查看次数: |
25386 次 |
最近记录: |