在我们发布产品过程中,有的时候需要修改某些表的主键,但是又不能在企业管理器中直接修改,必需写sql语句,
这改如何处理呢? 可以先删除主键,再新建主键 , 下面举一个详细的例子:
create table abcd
(
a char(10) not null,
b char(10) not null primary key(a,b),
c char(10) null,
d char(10) null
)
一个存在的表 abcd ,主键为 a+b , 现在想把 a+b+c 三列修改为主键
1. 删除主键:
Declare @Pk varChar(100);
Select @Pk=Name from sysobjects where Parent_Obj=OBJECT_ID('abcd') and xtype='PK';
if @Pk is not null
begin
exec('Alter table abcd Drop '+ @Pk) --删除原主键
end
2. 把所有主键设为不能为空
alter table abcd alter column c char(10) not null
3. 重建主键:
ALTER Table abcd ADD CONSTRAINT pk_abcd PRIMARY KEY (a, b, c )