sql 中对象的判断

----判断表是否存在
IF exists(select * from syscolumns where id=object_id('dbo.ActivityAssociateSubject'))
BEGIN
----判断字段是否存在
IF NOT exists( select * from sysobjects o ,syscolumns c,systypes t  where o.id=c.id and c.xtype=t.xtype and o.name = 'ActivityAssociateSubject' and c.name='subject_code' and c.length = 33 and t.name = 'varchar')
BEGIN
print('dbo.BAINFO'+'中的'+'baname不存在')---判断字段是否存在
END
------判断主键


SELECT 
    * 
FROM sys.indexes IDX
    INNER JOIN sys.index_columns IDXC
        ON IDX.[object_id]=IDXC.[object_id]
            AND IDX.index_id=IDXC.index_id
    LEFT JOIN sys.key_constraints KC
        ON IDX.[object_id]=KC.[parent_object_id]
            AND IDX.index_id=KC.unique_index_id
    INNER JOIN sys.columns C
        ON IDX.[object_id]=C.[object_id]
            AND IDXC.Column_id=C.Column_id
            where object_name(IDX.object_id)=  'ActivityAssociateSubject' and KC.type = 'PK'
            
            
            
------判断索引
SELECT 
    * 
FROM sys.indexes IDX
    INNER JOIN sys.index_columns IDXC
        ON IDX.[object_id]=IDXC.[object_id]
            AND IDX.index_id=IDXC.index_id
    LEFT JOIN sys.key_constraints KC
        ON IDX.[object_id]=KC.[parent_object_id]
            AND IDX.index_id=KC.unique_index_id
    INNER JOIN sys.columns C
        ON IDX.[object_id]=C.[object_id]
            AND IDXC.Column_id=C.Column_id
            where object_name(IDX.object_id)=  'activitytable' and c.name in('EndTime','StartTime','ActCounter')
            
------判断默认值 


select  *
    from       syscolumns       a       
    join       sysobjects       b       on       a.id=b.id       
    join       syscomments       c       on       a.cdefault=c.id       
    join       sysobjects       d       on       c.id=d.id       
    where       b.name= 'ActivityAssociateSubject'           
    and       a.name= 'subject_code'




------

END

select * from sysobjects where name = 'ActivityAssociateSubject'


select * from sysobjects where   id = '779149821'       
select * from syscolumns where   id = '779149821' 
----xtype 类型,关联systypes表
select * from systypes where  xtype = '56'
select * from systypes where  xtype = '167'
----cdefault 默认值,为0表示没有默认值
select * from syscomments  where id = '791934143' 
-----isnullable 表示是否为空,0表示不允许为空,1表示可以为空
select name,isnullable from syscolumns where   id = '779149821' 
-----主键
 select * from  sys.indexes where   object_id = '779149821'     and  is_unique = 0 and  index_id = 7  
 select * from  sys.index_columns  where object_id = '779149821' and index_id = 7  
 select * from  sys.key_constraints where parent_object_id = '779149821'
 select * from  sys.columns  where object_id = '779149821' and column_id = 1


----- 聚集索引


 select * from  sys.indexes where   object_id = '779149821'     and   type_desc = 'CLUSTERED' 
 select * from  sys.index_columns  where object_id = '779149821' and index_id = 1 


 select * from  sys.columns  where object_id = '779149821' and column_id =4
 select * from  sys.columns  where object_id = '779149821' and column_id = 31
 
--- 非聚集索引


 select * from  sys.indexes where   object_id = '779149821'     and   type_desc = 'NONCLUSTERED' 
 select * from  sys.index_columns  where object_id = '779149821' and index_id =5 


 select * from  sys.columns  where object_id = '779149821' and column_id =2



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值