1
我一直在這裏搔着我幾個小時。從位於不同表格中的實體創建外鍵
我有四個表Book
,Author
,Allocation
和WorkSession
我需要做的是,bid
和authID
的組合從WorkSession
表Allocation
表中存在約束。
我試圖創建一個外鍵約束就像你通常會做,但它不會工作,因爲引用的ID是外國鍵已經和我不能創建一個新的密鑰,作爲分配表的標識符
CREATE TABLE Book(
bid NUMBER(4),
title VARCHAR2(30) NOT NULL,
SellingPrice NUMBER(6,2),
PRIMARY KEY (bid),
CONSTRAINT EM_SellingPrice CHECK(SellingPrice >= 0)
);
CREATE TABLE Author(
authID NUMBER(4),
fName VARCHAR2(30),
sName VARCHAR2(30),
PRIMARY KEY(authID),
CONSTRAINT EM_Name UNIQUE (fName,SName)
);
CREATE TABLE Allocation(
bid NUMBER(4),
authID NUMBER(4),
payRate NUMBER(6,2),
CONSTRAINT AL_PayRate CHECK(payRate >= 1 AND payRate < 80),
FOREIGN KEY(bid) REFERENCES Book(bid),
FOREIGN KEY(authID) REFERENCES Author(authID)
);
CREATE TABLE WorkSession(
bid NUMBER(4),
authID NUMBER(4),
WorkYear NUMBER(4),
WorkWeek NUMBER(2),
WorkHours NUMBER(4,2),
CONSTRAINT WY_Range CHECK(WorkYear > 2010 AND WorkYear < 2014),
CONSTRAINT WW_Range CHECK(WorkWeek >= 1 AND WorkWeek <= 52),
CONSTRAINT WH_Range CHECK(WorkHours >= 0.5 AND WorkHours <100),
CONSTRAINT FK_Check FOREIGN KEY(bid, AuthID) REFERENCES Allocation(bid, AuthID),
PRIMARY KEY(workYear, WorkWeek)
);
嗨亞歷克斯,你到底在找什麼?只有外鍵是你關心的問題,或者你想將分配表與WorkSession綁定一件事你不能創建一個從外鍵到外鍵的關係 – 2012-04-21 09:29:33
所以我終於弄明白了,並認爲這可能有助於任何人問題,最後,我將分配的外鍵分配爲該表的主鍵,這個鍵的錯誤是無法找到該表的主鍵。希望這有助於 – Ardenexal 2012-04-21 10:26:53
「分配」的主鍵是什麼? – 2012-04-21 13:30:21