Noo*_*uvo 8 t-sql sql-server ssms
我有一个简单的查询
CREATE TABLE #tempTable (id int)
DROP TABLE #tempTable
CREATE TABLE #tempTable (id int)
DROP TABLE #tempTable
Run Code Online (Sandbox Code Playgroud)
从我的理解,在第二部分,它应该创造#tempTable.
但它显示以下错误
消息2714,级别16,状态1,行4
数据库中已存在名为"#tempTable"的对象.
我搜索了原因并发现它是由于GO查询的两个部分之间的声明.因此,正确的查询是
CREATE TABLE #tempTable (id int)
DROP TABLE #tempTable
GO
CREATE TABLE #tempTable (id int)
DROP TABLE #tempTable
Run Code Online (Sandbox Code Playgroud)
我还发现GO只是告诉SSMS GO按顺序在各个批次之间发送SQL语句.
我的问题是,SQL语句是如何执行的?它不是按顺序执行的吗?
如果它按顺序执行,那么为什么我的第一个查询会导致错误?