小编典典

如果存在则丢弃 VS 丢弃?

all

有人可以告诉我两者之间是否有任何区别

DROP IF EXISTS [TABLE_NAME]



DROP [TABLE_NAME]

我问这个是因为我在我的 MVC Web 应用程序中使用 JDBC 模板。如果我使用DROP [TABLE_NAME]错误表示该表存在。如果我使用DROP IF EXISTS [TABLE_NAME]它说 SQL 语法不好。有人可以帮忙吗?


阅读 54

收藏
2022-08-17

共1个答案

小编典典

标准 SQL 语法是

DROP TABLE table_name;

IF EXISTS不标准;不同的平台可能以不同的语法支持它,或者根本不支持它。在 PostgreSQL 中,语法是

DROP TABLE IF EXISTS table_name;

如果表不存在,或者其他数据库对象依赖于它,第一个将引发错误。大多数情况下,其他数据库对象将是外键引用,但也可能有其他的。(例如视图。)如果表不存在,第二个不会抛出错误,但如果其他数据库对象依赖它,它仍然会抛出错误。

要删除一个表以及依赖它的所有其他对象,请使用其中之一。

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

小心使用 CASCADE。

2022-08-17