有人可以告诉我两者之间是否有任何区别
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 语法不好。有人可以帮忙吗?
标准 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。
这不是直接问的。但是在寻找如何正确放置表的过程中,我偶然发现了这个问题,我想很多其他人也是如此。
从 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;
你忘记了 table
你的语法:
drop table [table_name]
丢了一张桌子。
使用
drop table if exists [table_name]
在删除表之前检查表是否存在。
如果它存在,它会被丢弃。
如果不是,则不会引发错误并且不会采取任何措施。
DROP TABLE IF EXISTS [table_name]
它首先检查表是否存在,如果存在则删除表,同时
DROP TABLE [table_name]
它会在不检查的情况下删除,因此如果它不存在,则会以错误退出
如果不存在具有此类名称的表,DROP
则会失败并出现错误,而DROP IF EXISTS
什么也不做。
如果您使用脚本创建/修改数据库,这将很有用;这样您就不必手动确保删除表的先前版本。你只需做一个DROP IF EXISTS
并忘记它。
当然,您当前的数据库引擎可能不支持此选项,您提供的信息很难进一步说明错误。