Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL检查约束多个条件_Sql - Fatal编程技术网

SQL检查约束多个条件

SQL检查约束多个条件,sql,Sql,球队已经决定,除了总经理和捕手,一名球员 姓名不得超过10个字母。将其实现为检查约束 表:(表名:EMPBB02) 埃姆诺伊奈酒店 EMPNO ENAME POS BOSS HIREDATE SAL DEPTNO INCENTIVES ----- ---------- ------------ ---- --------- ---------- ---------- ---------- 712 rickey gm

球队已经决定,除了总经理和捕手,一名球员 姓名不得超过10个字母。将其实现为检查约束

表:(表名:EMPBB02) 埃姆诺伊奈酒店

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中会无声地失败。