让SQL等到上一个语句完成

 手机用户2602931985 发布于 2023-02-13 12:12

我一直在寻找,但我找不到正确的答案,可能我搜索错了,因为我不知道该找什么:)

无论如何,我有一个带有begin和的TSQL commit transaction.在事务中,我添加了一些列,并重命名了一些列.在重命名和添加列语句之后,我还运行一些更新语句以将数据加载到新创建的列中.

现在的问题是,由于某种原因,更新会产生一个错误,它无法更新给定列,因为它不存在(YET ???).

我的想法是,该语句仍在计算重命名和添加列,但已经继续使用更新语句.该表非常大,有几百万条记录,所以我可以想象它需要一些时间来添加和重命名列

如果我首先运行重命名并添加语句而不是单独更新语句,它确实有效.所以它与一些等待时间有关.

是否有可能让sql force逐步执行并等到完成语句完成后再转到下一个?

1 个回答
  • 如果修改列(例如添加它们),则必须先完成批处理才能继续更新它们.GO在表结构更改和更新之间插入关键字.

    为了说明这一点,以下代码将不起作用:

    create table sometable(col1 int)
    
    go
    
    alter table sometable add col2 varchar(10)
    
    insert into sometable(col2) values ('a')
    

    但插入go将使插入识别新列

    create table sometable(col1 int)
    
    go
    
    alter table sometable add col2 varchar(10)
    
    go
    
    insert into sometable(col2) values ('a')
    

    如果在代码中执行此操作,则可能需要为结构更改和数据迁移创建单独的事务.您仍然可以将它们包装在一个事务中以实现数据完整性.

    2023-02-13 12:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有