sql - 如何使一列依赖于同一表中的另一列
问题描述
我正在创建一个新的数据库表,我想让一列依赖于另一列。
我试图添加一些检查约束
CREATE TABLE borrower (
borrower_salary_id INT REFERENCES borrower_salary(id),
borrower_additional_income BOOLEAN NOT NULL,
borrower_additional_income_amount INT,
borrower_previous_loans BOOLEAN NOT NULL,
borrower_previous_loans_payment_delay BOOLEAN,
);
当且仅当borrower_additional_income 为真时,borrower_additional_income_amount 应该包含一些值我该怎么做?
解决方案
check
约束如下所示:
CREATE TABLE borrower (
borrower_salary_id INT REFERENCES borrower_salary(id),
borrower_additional_income BOOLEAN NOT NULL,
borrower_additional_income_amount INT,
borrower_previous_loans BOOLEAN NOT NULL,
borrower_previous_loans_payment_delay BOOLEAN,
CHECK ( (borrower_additional_income AND borrower_additional_income_amount IS NOT NULL) OR
(NOT borrower_additional_income AND borrower_additional_income_amount IS NULL )
)
);
或简化为:
CHECK ( borrower_additional_income = (borrower_additional_income_amount IS NOT NULL)
)
);
但是,问题是为什么要有一面旗帜?为什么不只检查是否borrower_additional_income_amount
是或不是NULL
?
推荐阅读
- c# - RadioButtonFor 始终将 true 传递给 MVC 控制器
- wordpress - WC:如何通过 billing_phone 或 billing_email 搜索客户
- python - Python 3:生成进程子类
- intellij-idea - Ant - 脚本中哪里出现了错误?
- python - 字典理解,项目根据属性划分为列表作为键。
- javascript - 添加到列表
- angular - 如何在 Angular 6 单元测试中依赖注入接口
- python-2.7 - 如何检查字典项目列表是否是子集或等于另一个具有字典项目的列表
- c++ - 重复的可变参数模板参数
- excel - 工作表名称作为 Vlookup 的搜索值