精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● ASP>>数据库>>判断一个表是否存在的 SQL 语句

主题:判断一个表是否存在的 SQL 语句
发信人: yahao()
整理人: qcrsoft(2001-12-13 07:24:07), 站内信件
  两个假设:
  1、已知数据库中所有的表默认的 Owner,如dbo(可以省略而取默认值)
  2、已知当前用户有权限访问 systemobjects 系统表

  SQL 语句:
  select * from sysobjects where id = 
     object_id(N'[dbo].[table_name]')
     and OBJECTPROPERTY(id, N'IsUserTable') = 1 
  '注:table_name 为实际要检查的表名

  解释:
  如果返回记录数为0则表明没有这个表,否则表示已经存在。
  
  systemobjects 表中保存着数据库的所有表、视图和存贮过程等的信
  息,检索这个系统表即可得到是否存在。此方法还适用于检查视图和存
  贮过程,相应的标志要改为IsView(视图/查询)或者IsProcedure(
  存贮过程),table_name 处为 view_name 或 procedure_name。
 
  评价:
  这种方法较检查错误代码确定表是否存在的方法相对较麻烦一些,但功
  能更强大,不仅可以检查表还可以检查视图/查询、存贮过程等,用途比
  较广泛。后者简便易行,不需要任何先觉条件,但应用范围比较有限。
  个人认为,如果力求规范的编程,推荐使用第一种也就是搜索系统表的
  方法判断对象(表、视图等)是否存在。

  请高手指教。


--
【 http://www.aspcn.com 】-〉ASP中华网:中国的ActiveX组件搜索地、ASP文章、教程
【 http://yahao.163.net 】-〉亚豪驿站™:我的个人主页,内容不多,个人兴趣爱好而已
【 --- [email protected] ---】-〉我的信箱,别扔炸弹哦!

※ 修改:.yahao 于 Jul 26 06:32:54 修改本文.[FROM: 61.131.86.154]
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 61.131.86.154]

[关闭][返回]