怎么创建这样的表:两个主键均定义成另一个表的主键的外键?

csbird 2005-05-06 04:34:56
首先有个课程表,其主键为课程号CNO
另有一张先修课课程表,表结构为(课程号,先修课课程号)
我希望把这两个主键定义成课程表CNO的外键。
该怎么做?
...全文
367 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
不可能在一个表里有两个主键吧
zjcxc 元老 2005-05-06
  • 打赏
  • 举报
回复
--测试表
create table 课程表(cno int primary key)

create table 先修课课程表(
课程号 int
foreign key references 课程表(cno)
on update cascade on delete cascade,
先修课课程号 int
foreign key references 课程表(cno) ,
-- on update cascade on delete cascade,
primary key(课程号,先修课课程号))
go

drop table 先修课课程表,课程表
zjcxc 元老 2005-05-06
  • 打赏
  • 举报
回复
两个字段同时是课程表cno的外键与它们自身是否为主键没有问题.

可以将两个字段同时定义为con的外键,但无法同时只能定义其中的一个与cno进行同步
zjcxc 元老 2005-05-06
  • 打赏
  • 举报
回复
你自己看看sql 方面的书,或者看看sql联机帮助,看看一个表是否允许有两个主键
(两个字段做联合主键当然没问题,但也只是一个主键,一个字段为主键,一个字段为外键,当然也不会有问题)



csbird 2005-05-06
  • 打赏
  • 举报
回复
两个主键没什么问题吧?
它们两个又同时都是外键
zjcxc 元老 2005-05-06
  • 打赏
  • 举报
回复
再说了,即使允许两个均为主键,如果两个字段都改,sql怎么给你同步课程号CNO? 那不乱套么?
zjcxc 元老 2005-05-06
  • 打赏
  • 举报
回复
"先修课程表的课程号和先修课课程号均为主键"

一个表只能定义一个主键,所以"先修课程表的课程号和先修课课程号均为主键"这个本身就不能实现
csbird 2005-05-06
  • 打赏
  • 举报
回复
先修课程表的课程号和先修课课程号均为主键
zjcxc 元老 2005-05-06
  • 打赏
  • 举报
回复
那有两个主键?

34,870

社区成员

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

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