语法直接参考online,不过一定确信要更改的字段唯一。

解决方案 »

  1.   

    要添加PRIMARY KEY,首先要将原来的PRIMARY KEY删除。PRIMARY KEY本身有名字,可用下面的SQL语句查得:
    select * from sysobjects where xtype='PK'
    如果不自己命名的话,默认会生成如下格式的主键名:
    PK__tempTable__74AE54BC
    其中tempTable为表名,74AE54BC是自己生成的,也可能没有。
    现假设有表tempTable,其中有字段H_F1(primary key char(10))、H_F2(char(10))、H_F3(char(10))、H_F4(char(10)),现在要将H_F1、H_F2共同设为主键,可进行如下操作:
    1、删除原来的主键:
    alter table tempTable drop PK__tempTable__74AE54BC
    2、将H_F2字段改为not null:
    alter table tempTable alter column H_F2 char(10) not null
    3、重新添加主键:
    alter table tempTable add primary key(H_F1,H_F2)
      

  2.   

    找主键名:select object_name(constid) from sysconstraints 
    where ( OBJECTPROPERTY (constid,'CnstIsClustKey') =1 or OBJECTPROPERTY (constid,'CnstIsNonclustKey') =1)
    and object_name(id)='yourtablename'
      

  3.   

    做成一个函数:create function get_primarykey_name (@tablename varchar(256))
    returns varchar(256)
    as
    begin
      declare @pk_name varchar(256)
      select @pk_name =object_name(constid) from sysconstraints 
          where ( OBJECTPROPERTY (constid,'CnstIsClustKey') =1 
          or OBJECTPROPERTY (constid,'CnstIsNonclustKey') =1)
          and object_name(id)=@tablename
      return @pk_name
    end  
    go
    select dbo.get_primarykey_name('test')