当我加入一些限制,例如:SQL冗余NOT NULL约束
create table Test(
IDTest int primary key,
Credit int not null constraint Credit check (Credit >= 0)
);
在这种情况下是不是在Credit
多余的,因为我加入一个约束Credit
必须not null
高于0 ?
当我加入一些限制,例如:SQL冗余NOT NULL约束
create table Test(
IDTest int primary key,
Credit int not null constraint Credit check (Credit >= 0)
);
在这种情况下是不是在Credit
多余的,因为我加入一个约束Credit
必须not null
高于0 ?
不,它不是多余的。
甲CHECK
约束接受值,如果条件不FALSE
,因此无论是TRUE
或UNKNOWN
。
如果您允许在列中为空,则NULL >= 0
将评估为UNKNOWN
并且将通过测试。
谢谢,使所有的感觉:) – RSort 2012-03-04 12:31:50
@RSort:考虑替代方案:如果它是一个条件必须为TRUE的要求,那么涉及可空列的每个约束将不得不明确地测试空值,这将是很多噪音和痛苦! – onedaywhen 2012-03-05 10:11:57
注意:某些(MySQL ...)SQL引擎会默默地忽略'CHECK'约束。 – biziclop 2012-03-04 12:08:55