如何在SQL中的两列之间创建检查约束?
我正在尝试创建一个基本工资 (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
,我该怎么做那?
I am trying to create a Basic pay (BP) table with
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)
);
As you can see near the ending, I want to check if upperlimit
is greater than lowerlimit
, how can I do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
它可能(可能确实)取决于您使用的数据库。
与 oracle 语法相比(例如:http://www.techonthenet.com/oracle/check .php),您缺少的可能是 NULL 和 CONSTRAINT 之间的“,”
It might (probably does) depend on the data base you use.
Comparing to the oracle syntax (e.g. here: http://www.techonthenet.com/oracle/check.php), what you are missing might be a ',' between NULL and CONSTRAINT
问题是您已将其定义为列级约束,但它引用了其他列。 您必须在表级别定义约束。
The problem is that you have defined it as a column level constraint but it references other columns. You must define a constraint at the table level.
这是正确的 SQL 查询...
注意最后一行中 NOT NULL 和 CONSTRAINT 后面的逗号。
Here's proper the SQL query...
Note the comma after NOT NULL and CONSTRAINT in the last line.