我需要确保插入到列中的数字为正(即大于零),但是找不到解决方法。 decimal
type's documentation和Numeric type overview均未提供允许我在数据库列上设置此类约束的解决方案(或技巧)。
我知道有一个unsigned
修饰符,但它只表示该值可能不为负(即小于零),并且将零保留为无符号列的有效值。
有没有办法在数据库架构级别上强制执行此操作?
如果没有,我可以在代码中简单地执行该规则,但是我想在模式中保持类型信息的明确。
最佳答案
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)
关于mysql - MariaDB列中仅允许正数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45547884/