我想知道,如何定义一个有限的范围(最大值和最小值)来存储表中的值?
我想要这个范围: [min: -99 , max: 999]
还有一些例子:
CREATE TABLE MyTable(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
code INT(11) NOT NULL
)
INSERT INTO MyTable (id,code)
VALUES (1, 42),
VALUES (2, -332),
VALUES (3, -83),
VALUES (4, 44324),
VALUES (5, 0),
VALUES (6, 999);
所以,我想要这个输出:
// MyTable
+----+------+
| id | code |
+----+------+
| 1 | 42 |
| 2 | -99 |
| 3 | -83 |
| 4 | 999 |
| 5 | 0 |
| 6 | 999 |
+----+------+
那么,如何限制我的表只接受有效(在范围内)值或在存储之前将它们转换为最大/最小值?
或者,如果我在上面考虑的是不可能的,那么我怎样才能显示结果在范围内有效?
// MyTable
+----+------+
| id | code |
+----+------+
| 1 | 42 |
| 2 | -332 |
| 3 | -83 |
| 4 | 44324|
| 5 | 0 |
| 6 | 999 |
+----+------+
我想要这样的查询:
SELECT id, IF(LENGTH(code) > 999, '999', code)) AS FilteredCode FROM MyTable
// also I can not implement to filter negative values (-99) in my query
最佳答案
您可以像这样使用 CHECK 约束:
CONSTRAINT code_fk CHECK (code BETWEEN -99 AND 999)
因此您的表将创建为:
CREATE TABLE MyTable(
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
code INT(11) NOT NULL,
CONSTRAINT code_fk CHECK (code BETWEEN -99 AND 999)
)
关于mysql - 如何定义在数据库中存储值的特定范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33778399/