sql - 如果存在则丢弃 VS 丢弃?

标签 sql drop-table

谁能告诉我两者之间是否有什么区别

DROP IF EXISTS [TABLE_NAME]
DROP [TABLE_NAME]

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

最佳答案

标准 SQL 语法是

DROP TABLE table_name;

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

DROP TABLE IF EXISTS table_name;

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

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

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

谨慎使用 CASCADE。

关于sql - 如果存在则丢弃 VS 丢弃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9565818/

相关文章:

sql - JPA 实体管理器 - 如何运行 SQL 脚本文件?

android - sqlite "DROP TABLE IF EXISTS"android中的错误

sql - 添加列时,我必须创建和删除而不是更改?

sql - 实现递归 CTE 以对 MariaDB 进行分层查询

mysql - 如何解决此问题 - 无法删除或更新父行 : a foreign key constraint fails

php - SQL 遍历表并在不是特定名称时删除

java - 如何从一个文本字段获取值到另一个文本字段

sql - SELECT或INSERT函数是否容易出现竞争状况?

SQL - 如何根据最后输入的值删除重复的行?

c# - 如何使用 C# 查找 MS Access 数据库中不同记录的计数?