(4.29)sql server中有关于GO的坑

本问题基于上海sql server dba技术群提问分析总结而成:

群友问题:  

  就是一台服务器有数据库A,但没有数据库B(A和B有相同得表),我把B数据库的建表语句执行了在use A环境下了,为什么A数据库会被修改呢?

 

建表语句如下:

  

 

过程分析:

  【1】首先,之前在运行脚本的时候,数据库选择的肯定是use A

  【2】 然后当use b的时候,会报错,因为有GO做提交,GO与GO之间的文本互不影响,所以图中的use B会报错找不到数据库,但是随后接了GO

  【3】 所以并没有切换到B(仍在use A环境下运行),又因为有GO,所以MSSQL会忽略use B该报错(只会回滚本条信息),继续运行文本后续内容。 

 

模拟测试:

  所以当test1不存在时,后续的select 3依然运行再test库环境下!

  

 

 

 

原理演示剖析:

【1】 当没有GO的时候

    

  结果: 如果某一行报错,那么该行及该后面所有语句都不会执行了

    

 

 

   

 【2】当有GO的时候

    

 

 

   结果: 加了GO之后,即使中间行报错,后面的行还是会执行 

    

 

 

    

 

  

 

posted @   郭大侠1  阅读(305)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
历史上的今天:
2018-04-08 事务控制及try catch
2018-04-08 SQL SERVER深入学习学习资料参考
2018-04-08 SQL Server 学习博客分享列表(应用式学习 + 深入理解)
2018-04-08 SQL Server学习路径(文章目录)
2018-04-08 使用tar+pigz+ssh实现大数据的高效传输
点击右上角即可分享
微信分享提示