在sql使用过程中,我们在删除数据库表时,需要对表是否存在进行下判断,再进行删除操作。下边就看看如何使用sql判断表是否存在:
sql代码如下:
| 代码如下 | 复制代码 |
|
if exists ( select * from INFORMATION_SCHEMA.tables |
|
可见,sql判断表是否存在非常简单,这样进行判断后再删除可以避免表不存在的错误。
我们再做得更高级一些
在sqlserver中,创建表之前判断表是否存在,如果存在则删除已有表
| 代码如下 | 复制代码 |
| ----SQL-Server if exists (select 1 from sysobjects where id = object_id('EMP') and type = 'U') drop table S_Evaluate go --CREATE Table: EMP create table EMP( Id numeric identity, -- 评估ID Conclusion text null --结论 constraint PK_S_EMP primary key nonclustered(Id) ) go |
|
临时表是否存在
USE [实例名]
| 代码如下 | 复制代码 |
|
GO IF EXISTS (SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'[表名]') AND OBJECTPROPERTY(ID, 'IsTable') = 1) |
|
例如:
| 代码如下 | 复制代码 |
|
use fireweb; IF EXISTS (SELECT * FROM dbo.SysObjects WHERE ID = object_id(N'TEMP_TBL') AND OBJECTPROPERTY(ID, 'IsTable') = 1) |
|
2、临时表是否存在:
方法一:
| 代码如下 | 复制代码 |
|
use fireweb; if exists(select * from tempdb..sysobjects where id=object_id('tempdb..##TEMP_TBL')) |
|
方法二:
| 代码如下 | 复制代码 |
|
use fireweb; if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#TEMP_TBL') and type='U') |
|