2014-09-11 3 views
-2

Я просто хочу ограничить значения в player_position при вставке данных в таблицу.Как определить ограничение проверки с условием ИЛИ

Create Table PLAYERS 
(Player_Id NUMBER(4),Player_First_Name VARCHAR(15),Player_Last_Name VARCHAR(15),Player_Team_Code CHAR(3), 
Player_Position CHAR(2), 
CONSTRAINT Player_Position_check CHECK (Player_position = 'QB' or 'RB' or 'WR' or 'DB' or 'LB' or 'OT' or 'DT' or 'PT' or 'KI') 
CONSTRAINT Player_Id_PK PRIMARY KEY (Player_Id)); 

что не так с этим кодом?

ответ

1

Вы должны использовать правильный список синтаксис, который является cluase IN:

Create Table PLAYERS (
    Player_Id NUMBER(4), 
    Player_First_Name VARCHAR(15), 
    Player_Last_Name VARCHAR(15), 
    Player_Team_Code CHAR(3), 
    Player_Position CHAR(2), 
    CONSTRAINT Player_Position_check 
     CHECK (Player_position in ('QB', 'RB', 'WR', 'DB', 'LB', 'OT', 'DT', 'PT', 'KI')), 
    CONSTRAINT Player_Id_PK PRIMARY KEY (Player_Id) 
); 

Вы должны рассмотреть вопрос о целесообразности вы должны поместить эти значения в таблице поиска и определение внешнего ключа вместо этого. Это может быть необязательно в этом конкретном случае, но, как правило, наличие большого количества значений в контрольном ограничении является дизайнерским запахом.