因此,我是一個初學者,並試圖按照我的教授指示如何完成此操作。它們如下:帶插入語句的Oracle SQL問題
考慮表1-3中描述的關係數據庫。帶下劃線的屬性是表格的主鍵。使用您的Oracle帳戶創建此數據庫並插入每個表中列出的元組。確保包含主鍵和外鍵約束。將檢查約束放在以下三個屬性上。評級(0到10之間),Lengith(大於0),ReleaseDate(在1/1/1900之後)。
表1:劇院
名稱(下劃線爲小學),市,省,郵編,電話
表2:電影
標題(小學),等級,長度,RELEASEDATE
表3 :ShownAt
TheatreName,MovieTitle(均列爲小學)
這裏是我讓他們宣稱:
CREATE TABLE Theatres (
Name varchar2(50) not null,
City varchar2(50) not null,
State varchar2(50) not null,
Zip number not null,
Phone varchar2(50) not null,
CONSTRAINT name_pk PRIMARY KEY (Name)
);
create table Movies (
Title varchar2(100),
Rating NUMBER CONSTRAINT Rating_CHK CHECK (Rating BETWEEN 0 AND 10),
Length NUMBER CONSTRAINT Length_CHK CHECK (Length > 0),
ReleaseDate date CONSTRAINT RDATE_CHK CHECK (ReleaseDate > to_date('1/January/1900', 'DD/MONTH/YYYY')),
CONSTRAINT title_pk PRIMARY KEY (Title)
);
create table ShownAt (
TheatreName varchar2(50),
MovieTitle varchar2(100),
CONSTRAINT moviet_fk FOREIGN KEY (MovieTitle) REFERENCES Movies(Title),
CONSTRAINT shown_pk PRIMARY KEY (TheatreName, MovieTitle)
);
這聲明罰款,我沒有得到任何錯誤。下面是我的插件(我給每個表一個例子插入):
insert into theatres values ('Great Escape 14', 'Wilder', 'KY', '41076', '(859) 442-0000');
insert into movies values ('The Expendables', '7.6', '103', '13 August 2010');
insert into shownat values ('Great Escape 14', 'The Expendables');
所有插入到電影院和電影熄滅順利。對於ShownAt,我得到的錯誤,其中大部分是這個樣子了很多:
Error starting at line 37 in command:
insert into shownat values ('Showcase Cinema De Lux Florence', 'The Pianist')
Error report:
SQL Error: ORA-02291: integrity constraint (LANGB1.MOVIET_FK) violated - parent key not found
含義:
02291. 00000 - "integrity constraint (%s.%s) violated - parent key not found"
*Cause: A foreign key value has no matching primary key value.
*Action: Delete the foreign key or add a matching primary key.
任何INSERT INTO ShownAt其中標題只有一個詞(比如電影最多)工作得很好,但是不止一個單詞(比如The Expendables)的任何內容都不會執行,並且出現上述錯誤。任何幫助將非常感激。我可以發佈你需要的任何其他細節。
什麼是符合您給出的示例錯誤的電影和劇院記錄的插入語句? @ APC的解釋似乎很可能,但看到其他數據將有助於證實這一點。 (另外,你是否應該在顯示的名字上也有一個FK?) – 2010-09-11 08:28:35