约束检查Oracle SQL

拉罗斯3

我想知道如何才能确保的值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));
安德烈亚斯(Andreas)

您需要使其成为离线约束

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章