hur.cn - 华软网

 热门搜索

如何用sql语句删除主键约束,并且在修改了列属性之后再把主键约束加上(放分100,解决问题立即相送,决不食言)

  作者:未知    来源:网络    更新时间:2018/5/16
我用pb做的前台,sqlserver作后台数据库。现在某一张表中已经包含数据,但是主键列字段不够长,想用sql语句增长字段长度,但是在查询分析器中执行alter table tab_name alter column col_name type(lenth)提示有主键约束,不让执行此语句。只好先用sql语句删除主键约束,再用alter table tab_name alter column col_name type(lenth)语句增长主键列字段长度,然后再用sql
语句建立主键约束。说得有点乱,大概就是这么一个思路,请各位高手不吝赐教,分不够再开贴放分。
------华软网友回答------
删除约束:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_mast_zhis_dm]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
ALTER TABLE [dbo].[mast] DROP CONSTRAINT FK_mast_zhis_dm
创建约束:
ALTER TABLE [dbo].[mast] ADD 
CONSTRAINT [FK_mast_zhis_dm] FOREIGN KEY 
(
[zhis_dm]
) REFERENCES [dbo].[zhis_dm] (
[zhis]
)
注:FK_mast_zhis_dm,关系名称.

------华软网友回复------
create table a (bb varchar(10) not null,cc money)

alter table a add primary key (bb)

alter table a drop CONSTRAINT PK__a__1372D2FE


"PK__a__1372D2FE" 为sysobjects 中表a的主键对象的name列的值.


------华软网友回复------
谢谢二位,我试验一下,如果可行,立即结贴。
------华软网友回复------
:)
------华软网友回复------
这些操作不能放到一起执行,但是分开执行就没有问题?那位大虾知道是何原因?实在没有答案的话,我就结贴放分了.
------华软网友回复------
declare @PK varchar(100)
create table a (bb varchar(10) not null,cc money)

alter table a add primary key (bb)

select @pk=name from sysobjects where xtype='PK' and parent_obj=object_id('a')
'                                                                  上面的a你的表名字

exec ('alter table a drop CONSTRAINT '+@pk)
------华软网友回复------
这样应该可以一起执行了。
------华软网友回复------
小弟在此谢过各味大虾了。
------华软网友回复------
学习 up      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。