gpt4 book ai didi

sql-server - 一个事务中 SQL Server 中的备用同义词

转载 作者:行者123 更新时间:2023-12-04 06:41:35 25 4
gpt4 key购买 nike

我是 Transact SQL 编程的新手。

我创建了一个存储过程,它会删除并创建一个现有的同义词,以便它指向另一个表。存储过程接受2个参数:

  • 同义词名称 - 现有同义词
  • nextTable - 要指向
  • 的表

    这是代码片段:
    ...
    BEGIN TRAN SwitchTran
    SET @SqlCommand='drop synonym ' + @synonymName
    EXEC sp_executesql @SqlCommand
    SET @SqlCommand='create synonym ' + @synonymName + ' for ' + @nextTable
    EXEC sp_executesql @SqlCommand
    COMMIT SwitchTran
    ...

    我们有一个应用程序会定期使用同义词写入数据。

    我的问题是我是否会遇到同义词被删除而应用程序尝试写入同义词的竞争条件?

    如果以上是一个问题,有人可以给我建议解决方案。

    谢谢

    最佳答案

    是的,你会遇到竞争条件。

    管理此问题的一种方法是拥有 sp_getapplock在事务模式下的 BEGIN TRAN 之后,并根据需要捕获/处理返回状态。这将逐字地序列化(在执行意义上,而不是隔离)调用者,因此在任何时候只有一个 SPID 执行。

    关于sql-server - 一个事务中 SQL Server 中的备用同义词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4166989/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com