仅允许MariaDB列中的正数

时间:2017-08-07 13:16:37

标签: mysql mariadb

我需要确保插入到列中的数字是正数(即大于零),但无法找到方法。 decimal type's documentationNumeric type overview都没有提供允许我在数据库列上设置此类约束的解决方案(或技巧)。

我知道有unsigned修饰符,但它只表示该值可能不是(即小于零),并且将零作为无符号列的有效值。

有没有办法在数据库架构级别强制执行此操作? 如果没有,我可以在代码中轻松强制执行规则,但我希望在模式中明确保留类型信息。

1 个答案:

答案 0 :(得分:2)

MariaDB 10.2支持CHECK constraints

MariaDB [test]> CREATE TABLE t1 (i INT CHECK(i>0));
Query OK, 0 rows affected (1.04 sec)

MariaDB [test]> INSERT INTO t1 VALUES (1);
Query OK, 1 row affected (0.08 sec)

MariaDB [test]> INSERT INTO t1 VALUES (0);
ERROR 4025 (23000): CONSTRAINT `i` failed for `test`.`t1`
MariaDB [test]> INSERT INTO t1 VALUES (-1);
ERROR 4025 (23000): CONSTRAINT `i` failed for `test`.`t1`
MariaDB [test]> 
MariaDB [test]> SELECT @@version;
+----------------+
| @@version      |
+----------------+
| 10.2.6-MariaDB |
+----------------+
1 row in set (0.00 sec)