有人可以告诉我两者之间是否有区别
DROP IF EXISTS [TABLE_NAME]
DROP [TABLE_NAME]
我问这是因为我在MVC Web应用程序中使用JDBC模板。如果使用DROP [TABLE_NAME]
错误,则表示该表存在。如果我使用DROP IF EXISTS [TABLE_NAME]
它,则表示SQL语法错误。可以帮忙吗?
有人可以告诉我两者之间是否有区别
DROP IF EXISTS [TABLE_NAME]
DROP [TABLE_NAME]
我问这是因为我在MVC Web应用程序中使用JDBC模板。如果使用DROP [TABLE_NAME]
错误,则表示该表存在。如果我使用DROP IF EXISTS [TABLE_NAME]
它,则表示SQL语法错误。可以帮忙吗?
Answers:
标准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。
CASCADE
BEGIN
COMMIT
DROP TABLE IF EXISTS [table_name]
它首先检查表是否存在,如果存在,则删除表,同时
DROP TABLE [table_name]
它不经检查即删除,因此如果不存在则退出并显示错误
如果不存在具有该名称的表,则DROP
失败,但DROP IF EXISTS
不执行任何操作。
如果您使用脚本创建/修改数据库,这将很有用;这样,您不必手动确保删除表的先前版本。您只需做一个,DROP IF EXISTS
然后就忘了它。
当然,您当前的数据库引擎可能不支持此选项,很难通过您提供的信息来进一步了解该错误。
DROP
需要您指定对象的类型(TABLE
在这种情况下)