MSSQL2005 更改primary key 的问题

liyuncdc 2011-04-18 04:24:23
Table A 有primary key(a+b+c),同时也是聚簇索引,,现在我想把primary key 变成(a+b+c+d)。有什么方法呢?

我尝试过删除约束,不过不行,弹出it is published and replication.

有什么解决方法吗?
...全文
117 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyuncdc 2011-04-18
  • 打赏
  • 举报
回复
先删除相关的订阅发布 修改表主键 然后再增加相关的订阅发布

如何做呢?
没有这方面经验
guguda2008 2011-04-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cs_lb 的回复:]

先删除相关的订阅发布 修改表主键 然后再增加相关的订阅发布
[/Quote]
正解
水族杰纶 2011-04-18
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cs_lb 的回复:]
先删除相关的订阅发布 修改表主键 然后再增加相关的订阅发布
[/Quote]
支持。。。
cs_lb 2011-04-18
  • 打赏
  • 举报
回复
先删除相关的订阅发布 修改表主键 然后再增加相关的订阅发布
快溜 2011-04-18
  • 打赏
  • 举报
回复
--查看主键
SELECT * FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE TABLE_NAME='tb'
--删除主键
alter table 表名 drop constraint 主键名
--添加主键
alter table 表名 add constraint 主键名 primary key (column1,column2,....,column)
gw6328 2011-04-18
  • 打赏
  • 举报
回复

create table #t(id1 int not null,id2 int not null,id3 int not null,id4 int not null,
constraint pk_x primary key (id1,id2,id3)
);
insert into #t select 1,2,3,4;

alter table #t drop constraint pk_x;

alter table #t add constraint pk_x primary key(id1,id2,id3,id4);
AcHerat 元老 2011-04-18
  • 打赏
  • 举报
回复
删除重建是可以的。。。
水族杰纶 2011-04-18
  • 打赏
  • 举报
回复
看提示貌似被发布和订阅了
是不是做了发布服务器
?
--小F-- 2011-04-18
  • 打赏
  • 举报
回复
取消主键  再设置
alter table a add constraint <主键名> primary key(a,b,c,d)
1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词
经典Sql语句 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、 增加一个列:Alter table tabname add columnname col type 删除一个列:Alter table tabname drop column columnname 注:用sql语句增加列时,不用加column,删除列时要有column。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧