primary key约束问题

littlekoral 2003-10-09 11:09:01
请问如何在已存在的表,表结构如下
PartsName varchar(20)primary key
Spec varchar(10)primary key
Quantity numeric 9
Price money 8
ForCustomer varchar(50)primary key

要在该表中插入一个brand字段,与已存在的3个键组成联合主键
如何用alter语句实现该项功能,谢谢!
...全文
68 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
txlicenhe 2003-10-09
  • 打赏
  • 举报
回复
不好意思,被楼主误导了,同意 pbsql(风云)
welyngj 2003-10-09
  • 打赏
  • 举报
回复
alter table add brand varchar(10) not null
alter table table_name add constraint cons_tbl primary key(partsname,spec,forcustomer,brand)
不行。
Select * into #tmp from 表
drop table 表
go
Create table 表(
PartsName varchar(20)not null,
Spec varchar(10)not null,
Quantity numeric (9),
Price money,
ForCustomer varchar(50)not null
brand varchar(10) not null,
constraint pk_comp primary key(partsname,spec,forcustomer,brand)
)
insert 表 select *,'数据' from #tmp
drop table #tmp
pbsql 2003-10-09
  • 打赏
  • 举报
回复
删除主键:
ALTER TABLE dbo.TABLE1
DROP CONSTRAINT PK_TABLE1

加brand列:
ALTER TABLE dbo.TABLE1 ADD
brand char(10) NULL

加主键:
ALTER TABLE dbo.TABLE1 ADD CONSTRAINT
PK_TABLE1 PRIMARY KEY CLUSTERED
(
PartsName,
Spec,
ForCustomer,
brand
) ON [PRIMARY]

welyngj 2003-10-09
  • 打赏
  • 举报
回复
to: txlicenhe(马可)
Create table 表(
PartsName varchar(20)primary key
Spec varchar(10)primary key
Quantity numeric 9
Price money 8
ForCustomer varchar(50)primary key
brand varchar(10) primary key
)
会报错的。一个标怎莫能有三个月书呢
welyngj 2003-10-09
  • 打赏
  • 举报
回复
alter table add brand varchar(10) not null
alter table table_name add constraint cons_tbl primary key(partsname,spec,forcustomer,brand)
sdhdy 2003-10-09
  • 打赏
  • 举报
回复
-- 假设表名为bbb,新加的字段为f3
declare @name varchar(200)
select @name=name from sysobjects where xtype='pk' and parent_obj=object_id('bbb')
exec('alter table bbb drop constraint '+ @name)
go
alter table bbb with nocheck add constraint [pk_bbb] primary key (F1,F3)
newdongkui 2003-10-09
  • 打赏
  • 举报
回复
--写个例子,你看看,表名叫 test 主键 pk_test
ALTER TABLE [dbo].[test] drop
CONSTRAINT [PK_test]
GO
ALTER TABLE [dbo].[test] ADD d varchar(50) not null default ''
GO
ALTER TABLE [dbo].[test] WITH NOCHECK ADD
CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED
(
[a],
[b],
[c],
[d]
) ON [PRIMARY]
GO

SilverSands 2003-10-09
  • 打赏
  • 举报
回复
yangwl(杨威利) 好啊!!!
PBPL的老东家!!
呵呵!1
SilverSands 2003-10-09
  • 打赏
  • 举报
回复
先用语句删掉主键,然后修改表插入字段,在重新建立主键。

但要注意新插入字段的值,作为主键不可重复!!
yangwl 2003-10-09
  • 打赏
  • 举报
回复
主键只能有一个,唯一约束用unique
txlicenhe 2003-10-09
  • 打赏
  • 举报
回复
先删掉再重建。
Select * into #tmp from 表
drop table 表
go
Create table 表(
PartsName varchar(20)primary key
Spec varchar(10)primary key
Quantity numeric 9
Price money 8
ForCustomer varchar(50)primary key
brand varchar(10) primary key
)
insert 表 select *,'' from #tmp
drop table #tmp

520zyb 2003-10-09
  • 打赏
  • 举报
回复
primary key 只能有一个。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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