ALTER TABLE [dbo].[tablename] WITH NOCHECK ADD
CONSTRAINT [PK_tablename] PRIMARY KEY CLUSTERED
(
[id],----联合主键列
[id1]--------联合主键列
) ON [PRIMARY]
GO
CONSTRAINT [PK_tablename] PRIMARY KEY CLUSTERED
(
[id],----联合主键列
[id1]--------联合主键列
) ON [PRIMARY]
GO
解决方案 »
- 关于并发 自增ID 增加的问题
- UPDATE在Access中运行成功,MSSQL中提示出错
- 一道查询的题目
- 请高手答疑﹕对索引列进行"%...%"查询时的性能疑惑。
- 如何取这样的数据(0031|04502|3892003|),请各位指教了,表示感谢了。
- 菜鸟问题。。。。。。。。。
- 谁知道:1NF和2NF有何区别呀,怎么判断一个模式是不是2NF呢?
- SQL Server访问并动态生成更新Oracle语句的存储过程执行出错!高手帮忙!!!向邹建求救!
- 如何把列名相同的两列或者几列合并成一列。
- 'CREATE VIEW' 必须是批查询中的第一条语句 ?
- 执行一个2句SQL的简单存储过程,对结果奇怪,请教大家。
- 请教一个关于库存管理的具体问题,看系统应如何实现?
--测试数据
create table ta(fname varchar(10), lname varchar(10), value int)
insert ta select 'Mark', 'Green', 10
union all select 'Jenny', 'Alfred', 20
union all select 'Cate', 'Thomshon',30
go
--修改
create table tb(fname varchar(10), lname varchar(10)
,value int, primary key(fname, lname))insert tb select * from ta
drop table ta
exec sp_rename tb, taselect * from ta
--清除
drop table ta
--下面这段程序出现错误:"无法在表 'ta' 中可为空的列上定义 PRIMARY KEY 约束。"
--测试数据
create table ta(fname varchar(10), lname varchar(10), value int)
insert ta select 'Mark', 'Green', 10
union all select 'Jenny', 'Alfred', 20
union all select 'Cate', 'Thomshon',30
go
--修改
ALTER TABLE [dbo].[ta] WITH NOCHECK ADD
CONSTRAINT [PK_tablename] PRIMARY KEY CLUSTERED
(
fname, lname
) ON [PRIMARY]
GO
select * from ta
--清除
drop table ta
------错误说的很明白:无法在表 'ta' 中可为空的列上定义 PRIMARY KEY 约束
--改成:
create table ta(fname varchar(10) not null, lname varchar(10) not null, value int)
insert ta select 'Mark', 'Green', 10
union all select 'Jenny', 'Alfred', 20
union all select 'Cate', 'Thomshon',30
go
--修改
ALTER TABLE [dbo].[ta] WITH NOCHECK ADD
CONSTRAINT [PK_tablename] PRIMARY KEY CLUSTERED
(
fname, lname
) ON [PRIMARY]
GO
select * from ta
--清除
drop table ta---道理跟主键不能为空是一样的
让你alter table, 你却要让人家改表结构(加 not null).
如果可以直接表的定义语句的话, 那我直接在表的定义语句中加一条primary key (fname, lname)就行了.还用得着,绕你这么一个大圈子吗?
column fname varchar(10) not null
goALTER TABLE ta alter
column lname varchar(10) not null
go
ALTER TABLE [dbo].[ta] WITH NOCHECK ADD
CONSTRAINT [PK_tablename] PRIMARY KEY CLUSTERED
(
fname, lname
) ON [PRIMARY]
GO
------我只是想回答楼主的问题:表(未定义主键)建好后,将不能在多列上建立主键? 没考虑很多
------如果联合主键列的数据有null或者不符合主键要求的数据的话,不管你用什么方法也是不合适的
在定义表时可以。表建好后,就不行了。