您现在的位置: 爱51代码网 >> 范文 >> 文章正文
sqlserver判断一张表的某个字段是否是主键

sqlserver判断一张表的某个字段是否是主键判断一张表的某个字段是否是主键,如果有则删除主键,并删除该字段
SELECT OBJECT_NAME(id)[tablename],col.name FROM sys.sysconstraints cons LEFT JOIN sys.columns col ON cons.colid=col.column_id  WHERE status=1

CREATE TABLE #temp
    (
      tbname NVARCHAR(50) ,
      num INT IDENTITY(1, 1)
    )    
INSERT  INTO #temp
        SELECT DISTINCT
                table_name
        FROM    INFORMATION_SCHEMA.KEY_COLUMN_USAGE
        WHERE   CONSTRAINT_NAME LIKE 'PK_%'
                AND TABLE_NAME NOT LIKE '%#%'
     
DECLARE @x INT ,
    @y INT ,
    @tb_name NVARCHAR(50)
DECLARE @table NVARCHAR(4000)
  
SET @x = 1
SET @table = N''
  
SELECT  @y = MAX(num)
FROM    #temp 
    
WHILE @x <= @y
    BEGIN
        SELECT  @tb_name = tbname
        FROM    #temp
        WHERE   num = @x
        SELECT  @table = @table 'alter table [dbo].[' + t.name
                '] drop constraint [' + i.name '];'
        FROM    sys.tables t
                INNER JOIN sys.indexes i ON t.object_id = i.object_id
        WHERE   i.is_primary_key = 1
                AND t.name = @tb_name   
              
   
        SELECT  @table =@table+  N'alter table  [dbo].[' + t.name '] drop column '
                + c.name ';'
        FROM    sys.tables t
                INNER JOIN sys.indexes i ON t.object_id = i.object_id
                INNER JOIN sys.index_columns ic ON i.object_id = ic.object_id
                                                   AND i.index_id = ic.index_id
                INNER JOIN sys.columns c ON c.column_id = ic.column_id
                                            AND c.object_id = ic.object_id
        WHERE   i.is_primary_key = 1
                AND t.name = @tb_name   
        exec    ( @table )
        SET @table=N''
        SET @x = @x + 1       
    END
DROP TABLE #temp
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 最新文章 热点文章 相关文章
    GIS用百度行政区域的经纬度直接画
    不小心卸载了.net 4 extend,vs2
    C#byte【】里的数转换成string时
    C#的session取不到值
    java如何判断一个字符串里的数字
    随机找出24个不一样的字,在把一
    java怎么实现html转为pdf
    lotus数据列表文档个数如何实时统
    lotus代理中LS如何将字符串保存到
    在lotus BS系统里怎样方便实现统
    GIS用百度行政区域的经纬度直接画
    不小心卸载了.net 4 extend,vs2
    C#byte【】里的数转换成string时
    C#的session取不到值
    java如何判断一个字符串里的数字
    java怎么实现html转为pdf
    lotus数据列表文档个数如何实时统
    在lotus BS系统里怎样方便实现统
    undefined reference timer_crea
    linux文件/usr/lib破坏了,还原后
    sql server 2008R2如何实现自
    sqlserver新增一列自动获得当
    托管的SQL Server 数据类型S
    sqlserver数据列如何判断每天
    Microsoft SQL Server Manag
    如何从Management Studio 的
    如何在整个数据库里查询出包
    资源池 'default' 没
    ASP里调用 MS-SQL的存储过程
    sqlserver时段统计存储过程代
     



    设为首页 | 加入收藏 | 网站地图 | 友情链接 |