sql中表级外键约束一个列怎么关联三个其他个列

sql中表级外键约束一个列怎么关联三个其他个列
问在线客服
扫码问在线客服
  • 回答数

    2

  • 浏览数

    5,297

2个回答 默认排序
  • 默认排序
  • 按时间排序

可以引用以下代码:

create table a(aid int CONSTRAINT pk_a_aid PRIMARY KEY , val char(10) )
create table b(bid int CONSTRAINT pk_b_bid PRIMARY KEY , val char(10) )
create table c(cid varchar(10) , abid int not null)

alter table c
add constraint fk_aid foreign key (abid) references a(aid)
go
alter table c
add constraint fk_bid foreign key (abid) references b(bid)
go

insert into a values(1,'aa')
insert into b values(2,'bb')

insert into c (cid,abid)values(234,1)
--INSERT 语句与 FOREIGN KEY 约束"fk_bid"冲突。表"dbo.b", column 'bid'。

insert into c (cid,abid)values(235,2)
--INSERT 语句与 FOREIGN KEY 约束"fk_aid"冲突。表"dbo.a", column 'aid'。


insert into a values(2,'aacc')
insert into b values(1,'bbdd')

insert into c (cid,abid)values(236,1)
insert into c (cid,abid)values(237,2)
--a表的aid列跟b表的bid列同时含有1和2,则在c插入执行成功

drop table c , a , b

取消 评论

楼主你好!

列级约束与表级约束的区别:

(1)列级约束:只能应用于一列上。

表级约束:可以应用于一列上,也可以应用在一个表中的多个列上。

(即:如果你创建的约束涉及到该表的多个属性列,则必须创建的是表级约束(必须定义在表级上);否则既可以定义在列级上也可以定义在表级上此时只是SQL语句格式不同而已)

(2)列级约束:包含在列定义中,直接跟在该列的其它定义之后 ,用空格分隔;不必指定列名

表级约束:与列定义相互独立,不包含在列定义中;与定义用‘,’分隔;必须指出要约束的列的名称

(注:因为在创建列级约束时,只需将创建列约束的语句添加到该字段(列)的定义子句后面;而在创建表级约束时,需要将创建表级约束的语句添加到各个字段(列)定义语句的后面,因为并不是每个定义的字段都要创建约束,所以必须指明需要创建的约束的列名。)

举例说明:Create Table project

项目编号 int

Constraint pk_pno primary key,

项目名称 char(20),

项目负责人 char(20),

Constraint un_pname_pm unique(项目名称,项目负责人)

分析:“项目编号”字段设置为主键,主键约束名为pk_pno,此主键约束为列主键约束“项目名称”和“项目负责人”的组合字段设置唯一性约束,此约束为表级约束)

我做的作业有4个表,其中一个表的一项来自其他表3 个表相同类型的某一项,如项目表(立项人学号或工号) 教师表(工号) 本科生表(学号) 研究生表(学号),我是这样做的: foreign key(立项人学号或工号) references 教师表(工号), foreign key(立项人学号或工号) references

取消 评论

您可以邀请下面用户,快速获得回答

加载更多答主

ZOL问答 > 相机 > 尼康相机 > 尼康SQ > sql中表级外键约束一个列怎么关联三...

热门数码相机排行

查看更多排行 >

举报

感谢您为社区的和谐贡献力量请选择举报类型

举报成功

经过核实后将会做出处理
感谢您为社区和谐做出贡献

sql中表级外键约束一个列怎么关联三个其他个列

点击可定位违规字符位置

扫码参与新品0元试用
晒单、顶楼豪礼等你拿

扫一扫,关注我们
提示

确定要取消此次报名,退出该活动?