if exists(select name from sysobjects
where name='gg' and type='u')
drop table gg和select object_id('gg','u') is not null
drop table gg在论坛看到的基本上是用object_id来判断的,可是书上的全是用exists来判断的。上面这2条语句是等价的吗?如果是存储过程、触发器的话也一样可以通用?用哪种方法比较好呢?

解决方案 »

  1.   

    重要事项:  
    使用 OBJECT_ID 不能查询非架构范围内的对象(如 DDL 触发器)。对于在 sys.objects 目录视图中找不到的对象,需要通过查询适当的目录视图来获取该对象的标识号。例如,若要返回 DDL 触发器的对象标识号,请使用 SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'。