CREATE TABLE ARTIST (
ArtistID Int NOT NULL IDENTITY(1,1),
LastName Char(25) NOT NULL,
FirstName Char(25) NOT NULL,
Nationality Char(30) NULL,
DateOfBirth Numeric(4) NULL,
DateDeceased Numeric(4) NULL,
CONSTRAINT ArtistPK PRIMARY KEY(ArtistID),
CONSTRAINT ArtistAK1 UNIQUE(LastName, FirstName),
CONSTRAINT BirthValuesCheck CHECK (DateOfBirth < DateDeceased),
CONSTRAINT ValidBirthYear CHECK
(DateOfBirth LIKE '[1-2][0-9][0-9][0-9]'),
CONSTRAINT ValidDeathYear CHECK
(DateDeceased LIKE '[1-2][0-9][0-9][0-9]')
);
一個表,我得到這個錯誤:錯誤報告 - SQL錯誤:ORA-00907:缺少右括號 00907 。00000 - 「缺少右括號」 任何想法爲什麼?
這不是一個了不起的答案,但你有沒有嘗試刪除約束,然後逐個添加它們以查看哪些失敗? –
爲什麼你對名字和姓氏有'UNIQUE'約束?是不可能有多個同名的藝術家?另外,爲什麼不在出生/死亡日期使用'DATE'日期類型? – MT0
'char(25)'和'char(30)'數據類型幾乎肯定是一個糟糕的選擇。名稱和國籍是可變長度字符串,請改用'varchar2'。你的'DateOfBirth'和'DateDeceased'幾乎可以肯定是一個'date',而不僅僅是存儲一個數字年份。如果您想在數字字段中添加檢查約束,請進行數字比較(即'YearOfBirth BETWEEN 1000和2999') –