将SQL列限制为给定范围

时间:2017-09-09 13:13:36

标签: mysql sql

数据类型integer的列存储业务规则所需的值,该值必须仅为0到4194303.

数据库如何执行此规则?

1 个答案:

答案 0 :(得分:3)

在大多数数据库中,您将使用check约束。 MySQL允许您声明检查约束,但目前不强制执行它们:

alter table t add constraint chk_t_col check (col between 0 and 4194303);

(更具体地说,没有一个支持的存储引擎实现检查约束。)

相反,您需要使用before insert和update触发器来验证值。也许未来的版本实际上会强制执行检查约束并允许它们被声明。

如果您不熟悉触发器,则不应仅从Stack Overflow复制代码。相反,首先要了解它们。一个好的开始是documentation