DROP IF EXISTS与DROP的区别是什么?

10 浏览
0 Comments

DROP IF EXISTS与DROP的区别是什么?

有人能告诉我这两个之间有什么区别吗:

DROP IF EXISTS [TABLE_NAME]

DROP [TABLE_NAME]

我问这个问题是因为我在我的MVC Web应用中使用JDBC模板。如果我使用DROP [TABLE_NAME],会提示错误表存在。如果我使用DROP IF EXISTS [TABLE_NAME],会提示语法错误。有人可以帮忙吗?

admin 更改状态以发布 2023年5月21日
0
0 Comments

这不是直接问的问题。但是在寻找如何正确删除表时,我偶然发现了这个问题,我猜其他人也是这样。

从 SQL Server 2016+ 开始,可以使用

DROP TABLE IF EXISTS dbo.Table

对于 SQL Server < 2016,我使用以下方法来永久删除表:

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

或者对于临时表,可以使用以下方法:

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

0
0 Comments

标准的SQL语法是\n

DROP TABLE table_name;

\nIF EXISTS不是标准的,不同的平台可能使用不同的语法支持它,或者根本不支持。在PostgreSQL中,语法如下:\n

DROP TABLE IF EXISTS table_name;

\n第一个选项将在表不存在或其他数据库对象依赖它时抛出错误。大多数情况下,其他数据库对象将是外键引用,但也可能有其他类型的对象(例如视图)。第二个选项不会在表不存在时抛出错误,但如果其他数据库对象依赖它仍会抛出错误。\n要删除一个表以及所有依赖它的其他对象,请使用下列命令之一。\n

DROP TABLE table_name CASCADE;
DROP TABLE IF EXISTS table_name CASCADE;

\n请谨慎使用CASCADE。

0