if object_id('tb1','U') is not null为什么需要这条语句

时间:2021-06-14 20:54:57
代码如下,疑问是为什么需要
if object_id('tb1','U') is not null
   drop table tb1
这段代码,没有这段代码难道就不行吗?object_id的这段代码意义是什么,还望高手耐心指教
[代码]
if object_id('tb1','U') is not null
   drop table tb1
go
create table tb1
(
 id int,
 金额 int
)
go
insert into tb1
select 1,12 union all
select 2,13 union all
select 3,15 union all
select 3,20 union all
select 4,12 union all
select 4,21
go
if object_id('tb2','U') is not null
   drop table tb2
go
create table tb2
(
 id int,
 分类 varchar(10)
)
go
insert into tb2
select 1,'一类' union all
select 2,'一类' union all
select 3,'二类' union all
select 4,'二类'
go
select 分类,金额=sum(金额) from tb1 inner join tb2 on tb1.id=tb2.id group by 分类
go

8 个解决方案

#1


只是为了在创建表之前做个判断看是否有这个名称的表存在,如果存在就删除,然后创建,不存在就直接创建了。。。。

#2


判断是否存在表,如果存在就删除,下面语句创建,

#3


判断表tb1是否存在.存在则删除之.

#4


OBJECT_ID 返回架构范围内对象的数据库对象标识号。
参数
' object_name '

要使用的对象。object_name 的数据类型为 varchar 或 nvarchar。如果 object_name 的数据类型为 varchar,则它将隐式转换为 nvarchar。可以选择是否指定数据库和架构名称。

' object_type '

架构范围的对象类型。object_type 的数据类型为 varchar 或 nvarchar。如果 object_type 的数据类型为 varchar,则它将隐式转换为 nvarchar。有关对象类型的列表,请参阅 sys.objects (Transact-SQL) 中的 type 列。

if object_id('tb1','U') is not null --判断object_id返回tb表的id 是否为空
  drop table tb1  --如果为空说明表存在,则删除tb1表

#5


楼上们说的很对。。。

#6


引用 5 楼 suiyanpeng 的回复:
楼上们说的很对。。。

++

#7


傳回結構描述範圍的物件之資料庫物件識別碼。 

 object_name '

這是要使用的物件。object_name 是 varchar 或 nvarchar。如果 object_name 是 varchar,它會隱含地轉換成 nvarchar。資料庫和結構描述名稱的指定是選擇性的。

' object_type '

這是結構描述範圍物件類型。object_type 是 varchar 或 nvarchar。如果 object_type 是 varchar,它會隱含地轉換成 nvarchar。如需物件類型清單,請參閱<sys.objects (Transact-SQL)>中的 type 資料行。

用語句就是這樣意思,對象名和ID一對一 OBJECT_ID(Name,'U'),OBJECT_Name(ID) 

SELECT ID, name,OBJECT_ID(Name,'U'),OBJECT_Name(ID) 
from sysobjects
WHERE xtype='U'

#8


一般在写脚本的时候 判断是否存在  

#1


只是为了在创建表之前做个判断看是否有这个名称的表存在,如果存在就删除,然后创建,不存在就直接创建了。。。。

#2


判断是否存在表,如果存在就删除,下面语句创建,

#3


判断表tb1是否存在.存在则删除之.

#4


OBJECT_ID 返回架构范围内对象的数据库对象标识号。
参数
' object_name '

要使用的对象。object_name 的数据类型为 varchar 或 nvarchar。如果 object_name 的数据类型为 varchar,则它将隐式转换为 nvarchar。可以选择是否指定数据库和架构名称。

' object_type '

架构范围的对象类型。object_type 的数据类型为 varchar 或 nvarchar。如果 object_type 的数据类型为 varchar,则它将隐式转换为 nvarchar。有关对象类型的列表,请参阅 sys.objects (Transact-SQL) 中的 type 列。

if object_id('tb1','U') is not null --判断object_id返回tb表的id 是否为空
  drop table tb1  --如果为空说明表存在,则删除tb1表

#5


楼上们说的很对。。。

#6


引用 5 楼 suiyanpeng 的回复:
楼上们说的很对。。。

++

#7


傳回結構描述範圍的物件之資料庫物件識別碼。 

 object_name '

這是要使用的物件。object_name 是 varchar 或 nvarchar。如果 object_name 是 varchar,它會隱含地轉換成 nvarchar。資料庫和結構描述名稱的指定是選擇性的。

' object_type '

這是結構描述範圍物件類型。object_type 是 varchar 或 nvarchar。如果 object_type 是 varchar,它會隱含地轉換成 nvarchar。如需物件類型清單,請參閱<sys.objects (Transact-SQL)>中的 type 資料行。

用語句就是這樣意思,對象名和ID一對一 OBJECT_ID(Name,'U'),OBJECT_Name(ID) 

SELECT ID, name,OBJECT_ID(Name,'U'),OBJECT_Name(ID) 
from sysobjects
WHERE xtype='U'

#8


一般在写脚本的时候 判断是否存在