约束检查 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)
);
我想知道如何确保 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)
);