BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT
BEGIN TRANSACTION
CREATE TABLE dbo.Tmp_A
(
a char(10) NOT NULL,
b char(10) NOT NULL,
c char(10) NOT NULL,
d char(10) NULL
)  ON [PRIMARY]
GO
IF EXISTS(SELECT * FROM dbo.A)
 EXEC('INSERT INTO dbo.Tmp_A (a, b, c, d)
SELECT a, b, c, d FROM dbo.A TABLOCKX')
GO
DROP TABLE dbo.A
GO
EXECUTE sp_rename N'dbo.Tmp_A', N'A', 'OBJECT'
GO
ALTER TABLE dbo.A ADD CONSTRAINT
PK_A PRIMARY KEY CLUSTERED 
(
a,
b,
c
) ON [PRIMARY]GO
COMMIT

解决方案 »

  1.   

    sp_helpconstraint 'a'--查看约束名
    alter table a drop constraint constriant_name 
    alter table a add constraint pk_a primary key(a,b,c)
      

  2.   

    alter table a drop constraint 约束名
    不需要赋值给一个字符串变量
      

  3.   

    alter table A add constraint  primary key(a,b,c)
      

  4.   

    select * from sysobjects a left join syscomments b on a.id=b.idwhere a.xtype='C'
      

  5.   

    select * from sysobjects a left join syscomments b on a.id=b.id
    left join sysobjects c on  a.parent_obj=c.id left join syscolumns d on 
    a.parent_obj=d.id and b.colid=d.colid
    where a.xtype='C' AND d.Name='字段名' and c.Name='表名'
    这样就可查出所有表及哪个字段上的约束.