2015-02-20 5 views
-2

Команда решила, что, за исключением gm и ловушек, имя игрока не должно превышать 10 букв. Реализуйте это как ограничение проверки.SQL check constraint multiple conditions

Таблица: (Имя таблицы: empbbb02) EMPNO ENAME

EMPNO ENAME  POS   BOSS HIREDATE   SAL  DEPTNO INCENTIVES 
----- ---------- ------------ ---- --------- ---------- ---------- ---------- 
712 rickey  gm    01-JAN-98  10000   40 
735 lasorda coach  712 10-JAN-98  2000   40 
707 bochy  coach  712 11-JAN-98  2000   40 
798 berra  coach  712 12-JAN-98  2000   40 
782 musial  right field 707 01-FEB-98  42000   20 
763 gehrig  first base 735 11-MAR-98  85000   10 
777 minoso  shortstop 735 05-MAY-98  85000   10  6000 
721 sandberg second base 735 28-FEB-98  25000   10 
788 cey  third base 735 10-JAN-99  15000   10  8000 
720 williams left field 707 05-JAN-99  15000   20 
755 johnson pitcher  798 08-NOV-98  50000   30 
+5

Пожалуйста, помечать вопрос с конкретной СУБД вы находитесь с помощью. Как рекомендуется в этой большой коробке, когда вы выбрали тег 'sql'. – Barmar

ответ

0

Вы должны добавить проверочное ограничение в таблицу:

alter table empbbb02 add check (char_length(ename) <= 10 or pos in ('gm','catcher')) 
+0

Да, может быть. Но если OP использует, скажем, Oracle или SQL Server, то это совершенно неправильно. – Ben

+1

Нет тега Oracle там, никаких dbms не указано, поэтому предполагается ANSI SQL. Зачем давайте для идеального ответа? – jarlh

+0

Если вы не можете знать, правильный ли код, вы не можете утверждать, что это «идеальный» ответ. Поскольку большинство RDBMS не реализуют ANSI SQL, вы также не можете предположить, что это то, что требуется (и в целом, если предположить, что это не самое лучшее). У нас есть специальный тег для ANSI SQL ([tag: ansi-sql]), если это то, что требуется. – Ben