怎么用SQL语句,把现在表里的一个字段,设成主键,原来还有两个字段是主键,现在设三个是主键,如何写SQL

解决方案 »

  1.   

    create table testtable
    (
     field1 int not null,
     field2 int not null,
     field3 int not null,
     constraint testtable_PK Primary Key(field2,field3)
    )
    goalter table testtable drop constraint testtable_PK
    goalter table testtable add constraint testtable_PK Primary Key(field1,field2,field3)
    go
      

  2.   

    那个字段要定义为Not Null,不然不能添加为PK
      

  3.   

    1.找到表里的主建名称 
    SELECT     pkey.name
    FROM         sys.sysobjects AS pkey INNER JOIN
                          sys.sysobjects ON pkey.parent_obj = sys.sysobjects.id
    WHERE     (sys.sysobjects.name = '表')2.  删除主建约束   
      alter   table   tablename   drop   constraint   主建名称3.新建主建 ALTER TABLE 表  ADD CONSTRAINT 主建名称 PRIMARY KEY CLUSTERED (字段1, 字段2, 字段3)
      

  4.   

    DECLARE @PkName nvarchar(50), @Sql nvarchar(500) SELECT  @PkName = pkey.name
                                                                                         FROM   sys.sysobjects AS pkey INNER JOIN sys.sysobjects ON pkey.parent_obj =sys.sysobjects.id    WHERE     (sys.sysobjects.name = 't1')SET   @Sql = 'ALTER TABLE t1 DROP CONSTRAINT ' + @PkName EXEC (@Sql)
    ALTER TABLE t1 ADD CONSTRAINT pk_1 PRIMARY KEY CLUSTERED (id, nm, g) ON [PRIMARY]