我试图在我的一个创建语句中为我的 INT 提供一系列可能的值,即
创建表站点( **SiteID INT (1,4),** UserID INT UNSIGNED 不为空, 名称 varchar(128) 唯一非空, 外键(UserID)引用用户(UserID), 主键 (SiteID) );
我忘记了您用于范围的语法,而且当我尝试按原样使用它时,我很确定我错了。
作者注:此答案的前两部分不正确。我认为 MySQL 支持CHECK
约束,但它没有。还是不行。要将列限制为简单的值列表,请使用ENUM
此答案末尾的方法。如果逻辑更复杂(值范围、基于另一列的值等),唯一的 MySQL 选项是触发器。
如果它是一个,你需要一个CHECK
约束INT
:
CREATE TABLE Site (
SiteID INT,
CONSTRAINT SiteID_Ck CHECK (SiteID IN (1, 2, 3, 4)),
... and the rest
或者:
CREATE TABLE Site (
SiteID INT,
CONSTRAINT SiteID_Ck CHECK (SiteID BETWEEN 1 AND 4),
... and the rest
或者,如果您可以使用字符串 SiteID,那么:
CREATE TABLE Site (
SiteID ENUM('1', '2', '3', '4'),
... and the rest