首页 > 解决方案 > SQL - 使用两列向实体添加约束

问题描述

我有这张桌子叫pc_table

MODEL   SPEED   PRICE
1012    350     799
1001    700     799
1008    700     999
1013    733     1500
1010    750     699
1003    866     1500
1004    866     999
1005    1000    1499
1011    1100    1299
1009    1200    1699
1006    1300    2119
1007    1400    2299
1002    1500    2499

我必须将此约束添加到我的表中: if speed < 1200: price must be less than 1500

我写了这一行:ALTER TABLE pc_table ADD CHECK (speed < 1200 AND price <= 1500);

但这是不正确的,我将不胜感激!

标签: sqlsql-serverconstraints

解决方案


你想要的逻辑是:

ALTER TABLE pc_table ADD CHECK (speed >= 1200 OR price <= 1500)

您也可以将这一点(也许更接近您的意图)表达为:

ALTER TABLE pc_table ADD CHECK (NOT (speed < 1200 AND price > 1500) );

注意: NULL值通过检查约束。因此,如果您想禁止NULL值,则需要进行额外检查。


推荐阅读