SQL错误,急
来源:百度知道 编辑:UC知道 时间:2024/05/27 17:20:13
有两个creat table
CREATE TABLE Staff (
Eno numeric(3) NOT NULL,
Ename char(9) NOT NULL,
Sex char(2) NOT NULL,
Age numeric(3) NOT NULL,
Title char(9) NOT NULL,
Dno numeric(2) NOT NULL,
CONSTRAINT PK_Staff PRIMARY KEY CLUSTERED (Eno,Dno),
CONSTRAINT RightSex CHECK (Sex='男' OR Sex='女')
)
CREATE TABLE Department (
Dno numeric(2) NOT NULL,
Name char(9) NOT NULL,
Manager numeric(3) NOT NULL,
Phone numeric(9) NOT NULL,
CONSTRAINT PK_Department PRIMARY KEY CLUSTERED (Dno),
CONSTRAINT FK_Department FOREIGN KEY (Dno) REFERENCES Staff (Dno)
)
第二个为什么不对,语法检查通过,但执行不了
错误提示:
服务器: 消息 1776,级别 16,状态 1,行 1
在被引用表 'Staff' 中没有与外键 'FK_Department' 的引用列的列表匹配的主键或候选键。
服务器: 消息 1750,级别 16,状态 1,行 1
未能创建约束。请参阅前面的错误信息。
CREATE TABLE Staff (
Eno numeric(3) NOT NULL,
Ename char(9) NOT NULL,
Sex char(2) NOT NULL,
Age numeric(3) NOT NULL,
Title char(9) NOT NULL,
Dno numeric(2) NOT NULL,
CONSTRAINT PK_Staff PRIMARY KEY CLUSTERED (Eno,Dno),
CONSTRAINT RightSex CHECK (Sex='男' OR Sex='女')
)
CREATE TABLE Department (
Dno numeric(2) NOT NULL,
Name char(9) NOT NULL,
Manager numeric(3) NOT NULL,
Phone numeric(9) NOT NULL,
CONSTRAINT PK_Department PRIMARY KEY CLUSTERED (Dno),
CONSTRAINT FK_Department FOREIGN KEY (Dno) REFERENCES Staff (Dno)
)
第二个为什么不对,语法检查通过,但执行不了
错误提示:
服务器: 消息 1776,级别 16,状态 1,行 1
在被引用表 'Staff' 中没有与外键 'FK_Department' 的引用列的列表匹配的主键或候选键。
服务器: 消息 1750,级别 16,状态 1,行 1
未能创建约束。请参阅前面的错误信息。
CONSTRAINT FK_Department FOREIGN KEY (Dno) REFERENCES Staff (Dno) 有问题
因为staff表中的主键是一对属性(Eno,Dno),在进行外键设置的时候,作为主表的staff必须同时有这两个属性出现才行,即最后的定义必须是Staff(Eno,Dno).而你的第二个表中只有一个属性作为主键,就无法和staff表建立外键联接.
两个主键之间没有相关联!