现在,我在这里尝试的是根据任何条件(在 IF 块内)从我的 SQL Server 中删除数据库,例如。如果数据库存在,请删除并重新创建它。
我正在使用以下代码:
IF EXISTS (SELECT 1 FROM sys.databases db with(nolock) WHERE db.name = 'practice')
BEGIN
USE master
DROP DATABASE practice
END
此代码继续执行几分钟,然后回复错误说
消息 3702,级别 16,状态 4,第 1 行
无法删除数据库“练习”,因为它当前正在使用中。
然后我再次尝试在我的代码中使用 GO 语句来分隔执行流程,并使用以下代码(注意这也有 create database 语句):
IF EXISTS (SELECT 1 FROM sys.databases db with(nolock) WHERE db.name = 'practice')
BEGIN
USE master
GO
DROP DATABASE practice
GO
CREATE DATABASE practice
END
现在它抛出这个错误:
消息 102,级别 15,状态 1,第 3 行
'master' 附近的语法不正确。
消息 3702,级别 16,状态 4,第 1 行
无法删除数据库“练习”,因为它当前正在使用中。
消息 102,级别 15,状态 1,第 2 行
'END' 附近的语法不正确
我不知道我是否遗漏了什么,或者是否有任何解决方法需要完成。
此外,如果有的话,我会对更好的替代品感兴趣。
我不知道这是否可行。
问候, 香克斯