sql判断表名是否存在后进行删除

作者:袖梨 2022-06-29

在sql使用过程中,我们在删除数据库表时,需要对表是否存在进行下判断,再进行删除操作。下边就看看如何使用sql判断表是否存在:

sql代码如下:

 代码如下 复制代码

if exists ( select * from INFORMATION_SCHEMA.tables
where table_name = 'tab')
drop table tab


可见,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)
PRINT '存在'
ELSE
PRINT'不存在'


例如:

 代码如下 复制代码

use fireweb;
go

IF EXISTS  (SELECT  * FROM dbo.SysObjects WHERE ID = object_id(N'TEMP_TBL') AND OBJECTPROPERTY(ID, 'IsTable') = 1)
PRINT '存在'
ELSE
PRINT'不存在'

2、临时表是否存在:

方法一:

 代码如下 复制代码

use fireweb;
go

if exists(select * from tempdb..sysobjects where id=object_id('tempdb..##TEMP_TBL'))
PRINT '存在'
ELSE
PRINT'不存在'


方法二:

 代码如下 复制代码

use fireweb;
go

if exists (select * from tempdb.dbo.sysobjects where id = object_id(N'tempdb..#TEMP_TBL') and type='U')
PRINT '存在'
ELSE
PRINT'不存在'

相关文章

精彩推荐