单个列的多个约束

时间:2015-03-29 13:47:00

标签: sql oracle

我想确保只有价值观专家'平均'或者'充足'被输入到此表的levelOfExpertise列中,但每当我尝试输入其中一个值时,它会返回一个错误,表示输入的值太短。以下是此特定表的create table查询。我所指的专栏是levelOfExpertise

CREATE TABLE MusicianInstrument
(
     musicianNo varchar(5) not null 
         CONSTRAINT MI_PK1 REFERENCES Musician(musicianNo),
     instrumentName varchar(50) not null 
         CONSTRAINT MI_PK2 REFERENCES Instrument(instrumentName),
     levelOfExpertise varchar(50),

     CONSTRAINT levelOfExpertise CHECK (levelOfExpertise = 'Expert', 'Adequate', 'Avergage'),

     PRIMARY KEY(musicianNo,instrumentName)
);

如何才能确保我只能确保这三个值(ExpertAdequateAverage)?

由于

2 个答案:

答案 0 :(得分:0)

使用IN运算符

CHECK (levelOfExpertise IN ('Expert','Adequate','Avergage'))

答案 1 :(得分:0)

尝试按以下方式更改CHECK约束:

CONSTRAINT levelOfExpertise CHECK (levelOfExpertise IN ('Expert','Adequate','Avergage'))

我想您使用sql server作为RDBMS。