执行语句:
create table
职工
( 职工号 smallint not null,
姓名 char(10),
年龄 smallint check(年龄<60 or 年龄=60),
职务 char(20),
工资 smallint,
部门号 char(20) not null ,
primary key(职工号)
);
create table 部门
(
部门号 char(20) not null primary key ,
名称 char(20),
经理名 char(10),
电话 int,
foreign key(部门号) references 职工(部门号)
);
报错:
消息 1776,级别 16,状态 0,第 56 行在被引用表 '职工' 中没有与外键 'FK__部门__部门号__4E88ABD4' 中的引用列列表匹配的主键或候选键。消息 1750,级别 16,状态 0,第 56 行无法创建约束。请参阅前面的错误消息。
问题分析:
部门表中部门号参照职工表中的部门号,被参照的部门号不是候选键或者说不是主键,候选键最主要的特性就是“唯一”,所以为职工表中的部门号加上“列值唯一”即unique就可以解决问题了
改正后:
![e95448eb4fef67d04f7b096f9e68639d.png](https://img-blog.csdnimg.cn/img_convert/e95448eb4fef67d04f7b096f9e68639d.png)