首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DROP IF EXISTS VS DROP?

DROP IF EXISTS VS DROP?
EN

Stack Overflow用户
提问于 2012-03-05 19:26:08
回答 5查看 425.9K关注 0票数 170

有没有人能告诉我有没有什么区别

代码语言:javascript
复制
DROP IF EXISTS [TABLE_NAME]
代码语言:javascript
复制
DROP [TABLE_NAME]

我之所以这样问,是因为我在MVC web应用程序中使用了JDBC模板。如果我使用DROP [TABLE_NAME],错误提示表存在。如果我使用DROP IF EXISTS [TABLE_NAME],它会显示错误的SQL语法。有人能帮上忙吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-05 19:31:53

标准的SQL语法是

代码语言:javascript
复制
DROP TABLE table_name;

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

代码语言:javascript
复制
DROP TABLE IF EXISTS table_name;

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

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

代码语言:javascript
复制
DROP TABLE table_name CASCADE;
DROP TABLE IF EXISTS table_name CASCADE;

请谨慎使用CASCADE。

票数 311
EN

Stack Overflow用户

发布于 2016-04-15 16:27:46

它不是直接被问到的。但是在寻找如何正确地做drop tables时,我偶然发现了这个问题,我猜其他许多人也是这样做的。

在SQL Server 2016+中,您可以使用

代码语言:javascript
复制
DROP TABLE IF EXISTS dbo.Table

对于SQL Server <2016,我对永久表执行以下操作

代码语言:javascript
复制
IF OBJECT_ID('dbo.Table', 'U') IS NOT NULL 
  DROP TABLE dbo.Table; 

或者这个,作为临时表

代码语言:javascript
复制
IF OBJECT_ID('tempdb.dbo.#T', 'U') IS NOT NULL
  DROP TABLE #T; 
票数 35
EN

Stack Overflow用户

发布于 2012-03-05 19:28:30

您在语法中忘记了table

代码语言:javascript
复制
drop table [table_name]

这会丢弃一张桌子。

使用

代码语言:javascript
复制
drop table if exists [table_name]

在删除该表之前检查该表是否存在。

如果它存在,它将被删除。

如果不是,则不会抛出错误,也不会采取任何操作。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9565818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档