SQL检查约束多个条件
球队已经决定,除了总经理和捕手,一名球员 姓名不得超过10个字母。将其实现为检查约束 表:(表名:EMPBB02) 埃姆诺伊奈酒店SQL检查约束多个条件,sql,Sql,球队已经决定,除了总经理和捕手,一名球员 姓名不得超过10个字母。将其实现为检查约束 表:(表名:EMPBB02) 埃姆诺伊奈酒店 EMPNO ENAME POS BOSS HIREDATE SAL DEPTNO INCENTIVES ----- ---------- ------------ ---- --------- ---------- ---------- ---------- 712 rickey gm
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
您需要向表中添加检查约束:
alter table empbbb02 add check (char_length(ename) <= 10 or pos in ('gm','catcher'))
alter table EMPBB02添加检查(字符长度(ename)请用您正在使用的特定RDBMS标记您的问题。就像您在选择sql
标记时在大框中建议的那样。是的,也许吧。但是如果OP使用的是Oracle或sql Server,那么这是完全错误的。没有Oracle标记,没有指定dbms,因此假定为ANSI sql。为什么要否决一个完美的答案?如果您不能如果你知道代码是否正确,你就不能说这是一个“完美”的答案。因为大多数RDBMS并没有完美地实现ANSI SQL,你也不能假设这是必需的(一般来说,假设事情不是最好的)。如果这是必需的,我们对ANSI SQL()有一个特定的标记。“对使用SQL标记的问题的回答应尽可能使用ANSI SQL。”是的,和“问题应包括代码示例和表结构,并包括用于正在使用的DBMS实现(例如MySQL、PostgreSQL、Oracle、MS SQL Server)的标记。”但这一切都没有意义,您是否希望我删除您刚才引用的那一行:-)?答案尽可能是可移植的,这是有道理的,但事实并非如此——正如前面所说,它在Oracle或SQL Server中不起作用,它在SQLite中也会失败,在MySQL中会无声地失败。