5

我正在尝试创建一个基本工资(BP)表

CREATE TABLE bp (
   bpid       VARCHAR(5), 
      FOREIGN KEY (bpid) REFERENCES designation(desigid), 
   upperlimit DECIMAL(10,2) NOT NULL, 
   lowerlimit DECIMAL(10,2) NOT NULL, 
   increment  DECIMAL(10,2) NOT NULL 
      CONSTRAINT llvalid CHECK (upperlimit > lowerlimit)
 );

正如您在结尾附近看到的那样,我想检查是否upperlimit大于lowerlimit,我该怎么做?

4

3 回答 3

6

它可能(可能)取决于您使用的数据库。

与 oracle 语法相比(例如:http ://www.techonthenet.com/oracle/check.php ),您缺少的可能是 NULL 和 CONSTRAINT 之间的“,”

于 2009-02-25T07:17:17.577 回答
1

这是正确的 SQL 查询...

CREATE TABLE bp (bpid VARCHAR(5),
FOREIGN KEY (bpid) REFERENCES designation(desigid), 
upperlimit DECIMAL(10,2) NOT NULL,
lowerlimit DECIMAL(10,2) NOT NULL,
increment DECIMAL(10,2) NOT NULL,
CONSTRAINT llvalid CHECK (upperlimit > lowerlimit));

注意最后一行中 NOT NULL 和 CONSTRAINT 后面的逗号。

于 2009-02-25T07:22:41.713 回答
1

问题是您已将其定义为列级约束,但它引用了其他列。您必须在表级别定义约束。

ALTER TABLE bp
    ADD CONSTRAINT CK_limit CHECK ( upperlimit > lowerlimit)
于 2009-02-25T07:48:16.567 回答