CREATE TABLE item( id int, number1 float, number2 float, number3 float, number 4 float, PRIMARY KEY(id),
CONSTRAINT valid_numbers CHECK(
(number1 BETWEEN -1 and 1) AND
(number2 BETWEEN -1 and 1) AND
(number3 BETWEEN -1 and 1) AND
(number4 BETWEEN -1 and 1)
));
列number1,number2,number3和number4都是相似的,因为它们是需要介于-1和1之间的浮点数;但是他们的价值观是不同的。
我如何简单地说这句话?例如,如果它一直到第15位。我不想说“BETWEEN -1 and 1
”15次,我只想说一次。
答案 0 :(得分:0)
真的没办法"简化"此
我们可以使用避免多次重复BETWEEN -1 AND 1
的表达式,但它实际上并不简单。
例如:
GREATEST(ABS(IFNULL(number1,0))
,ABS(IFNULL(number2,0))
,ABS(IFNULL(number3,0))
,ABS(IFNULL(number4,0))
) <= 1
如果number1
到number4
中的任何值小于-1或大于1,则表达式将返回FALSE。
但是,MySQL并没有强制执行CHECK
约束。如果您希望实际执行此类约束,则需要将该逻辑放入BEFORE INSERT
和BEFORE UPDATE
触发器中。
CHECK
子句被解析但被所有存储引擎忽略