SQL 中 判断 表 或 临时表 是否 存在

时间:2022-03-14 09:05:29

SQL 中 判断 表 或 临时表 是否 存在

1、判断数据表是否存在
方法一:
use yourdb;

go
if object_id(N'tablename',N'U') is not null

print '存在'

else

print '不存在'


例如:use fireweb;

go
if object_id(N'TEMP_TBL',N'U') is not null

print '存在'

else

print '不存在'
 
方法二:
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'不存在'

 

方法三:
use yourdb;

go
if object_id(‘tablename’) is not null
print '存在'

else

print '不存在'

 
3、sql server也可以在sybase 上是在sysobjects中查找
select 目标名 from 数据库..sysobjects where name='目标名'
sysobjects 在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。

列名 数据类型 描述 
name sysname 对象名。 
Id int 对象标识号。 
xtype char(2) 对象类型。可以是下列对象类型中的一种: 
C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程
 
uid smallint 所有者对象的用户 ID。 
info smallint 保留。仅限内部使用。 
status int 保留。仅限内部使用。 
base_schema_
ver int 保留。仅限内部使用。 
replinfo int 保留。供复制使用。 
parent_obj int 父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。 
crdate datetime 对象的创建日期。 
ftcatid smallint 为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0。  
schema_ver int 版本号,该版本号在每次表的架构更改时都增加。 
stats_schema_
ver int 保留。仅限内部使用。 
type char(2) 对象类型。可以是下列值之一: 
C = CHECK 约束 
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束 
FN = 标量函数
IF = 内嵌表函数
K = PRIMARY KEY 或 UNIQUE 约束 
L = 日志
P = 存储过程
R = 规则
RF = 复制筛选存储过程
S = 系统表 
TF = 表函数
TR = 触发器
U = 用户表
V = 视图
X = 扩展存储过程
---------------------------------------
临时表:
if object_id('tempdb.dbo.##MutidataNew') is not null
begin
drop table ##MutidataNew
end
---------------------------------------
表:
if OBJECT_ID(N'Happen0',N'U') IS NOT NULL
begin
drop table Happen0 
end