列的SQL约束

时间:2013-09-29 05:22:07

标签: mysql sql ansi-sql

我有一个名为NumberInStock的列。但是,在数据库中,我想限制可以在1到100之间输入到此列的值。我将在列上使用什么约束,这将是SQL查询的正确语法?到目前为止我得到的是:

ALTER TABLE Inventory
ALTER COLUMN NumberInStock 

现在我在此之后放置约束以及我将使用什么约束

我正在使用具有1999 ANSI / ISO标准的MySQL。

2 个答案:

答案 0 :(得分:3)

通常使用 CHECK约束解决此类问题,如下所示 -

ALTER TABLE Inventory ADD CONSTRAINT chk1 CHECK(NumberInStock BETWEEN 1 AND 100);

这可以在 ORACLE 中完成但 MySQL 对于检查约束的实现有 BUG reported

因此,你必须在该表上实现两个触发器,一个用于 INSERT ,另一个用于 UPDATE

答案 1 :(得分:0)

使用检查约束。

ALTER TABLE <TABLE NAME>
ADD CONSTRAINT <CONSTRAINT NAME> CHECK(<PREDICATE> OR/AND/NOT <PREDICATE> ...)