jingua1026

MSSQL判断表是否存在及字段是否存在

判断表是否存在
IF  EXISTS (SELECT * FROM sysobjects WHERE name = \'t_dispatchBill_entry\' AND xtype = \'U\')
DROP TABLE t_dispatchBill_entry
GO

 

 

 

在ms sql中当我们需要修改表结构的时候,有时候因为添加或修改的表字段存在或不存在而导致后面的sql脚本执行失败。  
这时我们需要一个语句来判断当前字段的有效性。然后再执行我们的sql脚本,这样就可以避免了。  
--根据表名查询当前表的字段及其对应的表  
select b.name tableName, a.name fieldName   
    from syscolumns  a join sysobjects b on a.id = b.id   
    where b.xtype = \'u\' and b.name = \'mm_sample\';  
go  
/*    
xtype 的表示参数类型,通常包括如下这些    
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 = 扩展存储过程    
*/ 
--根据表名查询字段信息  
select name from syscolumns where id in (  
    select id from sysobjects where name = \'mm_sample\' 
)  
go  
select table_Name, column_Name from information_schema.columns   
where table_name = \'mm_sample\'   
go  
select name, length from syscolumns   
where id = object_id( \'mm_sample \')  
and colid in (  
    select colid from sysindexkeys where id = object_id( \'mm_sample \')  
)  
go  
--select object_id(\'mm_sample\')  
--select * from sysobjects where id = object_id(\'mm_sample\')  
select name, * from syscolumns where id = object_id(\'mm_sample\')  
go  
--查看表信息  
sp_help \'mm_sample\' 
go  
if (exists (select name from syscolumns where id = object_id(\'mm_sample\') and name = \'wt_id\'))  
    print \'该字段已经存在!\';  
else   
    print \'该字段不存在\';  
go 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/IBM_hoojo/archive/2010/06/03/5644111.aspx

posted on 2010-06-13 09:22  JinGua  阅读(1082)  评论(0编辑  收藏  举报
 

分类:

技术点:

相关文章: