约束检查 Oracle SQL

Constraint Check Oracle SQL

我想知道如何确保 SecondInstrument 的值不等于 PrimInstrument 的值,因为音乐家不可能两次使用同一乐器。到目前为止,这是我已经尝试过的方法,但我收到了这条错误消息:

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));

您需要将其设为 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)
);