sql-server - 如果表存在,如何删除它?

标签 sql-server tsql

表名称为Scores

以下操作是否正确?

IF EXISTS(SELECT *
          FROM   dbo.Scores)
  DROP TABLE dbo.Scores

最佳答案

Is it correct to do the following?

IF EXISTS(SELECT *
          FROM   dbo.Scores)
  DROP TABLE dbo.Scores

否。仅当表包含任何行时才会删除该表(如果表不存在,则会引发错误)。

相反,对于永久表,您可以使用

IF OBJECT_ID('dbo.Scores', 'U') IS NOT NULL 
  DROP TABLE dbo.Scores; 

或者,您可以使用临时表

IF OBJECT_ID('tempdb.dbo.#TempTableName', 'U') IS NOT NULL
  DROP TABLE #TempTableName; 

SQL Server 2016+ 有更好的方法,使用DROP TABLE IF EXISTS ...。请参阅the answer by @Jovan .

关于sql-server - 如果表存在,如何删除它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7887011/

相关文章:

sql-server - 仅返回具有存储过程的数据库名称

sql-server - 如何在SQL Server 中自动将YES/NO 转换为BIT?

c# - 改进 LINQ to EF 生成的 SQL 查询

sql - 我可以明确强制 SQL Server 不缓存我的查询结果集吗?

sql-server-2008 - SQL过程中的错误处理

sql-server - 如何控制计算列的数据类型?

sql - 检索每个客户的最新记录

sql - Excel VBA查询超时错误

sql-server - 在姓氏搜索中添加撇号

node.js - docker stack与mssql和node,如何正确连接到数据库?