2015-10-17 153 views
1

我想知道如何確保SecondInstrument的值不等於PrimInstrument中的值,因爲音樂家無法使用同一個樂器兩次。到目前爲止,這是我曾嘗試着呢,我得到這個錯誤信息:約束檢查Oracle SQL

02438. 00000 - "Column check constraint cannot reference other columns" 
*Cause: attempted to define a column check constraint that references 
      another column. 
*Action: define it as a table check constraint. 

有人能幫助我在這一個? ;) 提前致謝。


Create table SessionMusician (

Musician_ID number constraint pkSessionMus_Mus_ID Primary Key, 

StageName varchar2(30)constraint nnSessionMus_StageName Not NULL, 

RealName varchar2(30)constraint nnSessionMus_RealName Not NULL, 

PrimInstrument varchar2(30) constraint nnSessionMus_PrimInstrumant Not Null, 

SecondInstrument varchar2(30) Default 'N/A' Constraint 
chk_SessionMus_Secinstrument check (SecondInstrument <> PrimInstrument), 

CONSTRAINT SessionMusician_unique UNIQUE (StageName,RealName)); 
+0

您標記錯了。 'oracle-sqldeveloper'是關於這個工具的,而你的問題與這個工具無關。 – Andreas

回答

0

你需要使它成爲out-of-line constraint

CREATE TABLE SessionMusician (
    Musician_ID  NUMBER  CONSTRAINT pkSessionMus_Mus_ID   PRIMARY KEY, 
    StageName   VARCHAR2(30) CONSTRAINT nnSessionMus_StageName  NOT NULL, 
    RealName   VARCHAR2(30) CONSTRAINT nnSessionMus_RealName  NOT NULL, 
    PrimInstrument VARCHAR2(30) CONSTRAINT nnSessionMus_PrimInstrumant NOT NULL, 
    SecondInstrument VARCHAR2(30) DEFAULT 'N/A', 
    CONSTRAINT SessionMusician_unique  UNIQUE (StageName, RealName), 
    CONSTRAINT chk_SessionMus_Secinstrument CHECK (SecondInstrument <> PrimInstrument) 
); 
+0

感謝您編輯我的文章並回答它!大聲笑 – Laros3

+0

希望你從這兩方面學到了一些東西。 ;-) – Andreas