Uwaga autora :dwie pierwsze części tej odpowiedzi są nieprawidłowe. Myślałem, że MySQL obsługuje CHECK
ograniczenia i tak się nie stało. Nadal nie. Aby ograniczyć kolumny do prostej listy wartości, użyj ENUM
podejście na końcu tej odpowiedzi. Jeśli logika jest bardziej skomplikowana (zakres wartości, wartość oparta na innej kolumnie itp.), jedyną opcją MySQL jest wyzwalacz.
Potrzebujesz CHECK
ograniczenie, jeśli jest to INT
:
CREATE TABLE Site (
SiteID INT,
CONSTRAINT SiteID_Ck CHECK (SiteID IN (1, 2, 3, 4)),
... and the rest
Lub:
CREATE TABLE Site (
SiteID INT,
CONSTRAINT SiteID_Ck CHECK (SiteID BETWEEN 1 AND 4),
... and the rest
Lub jeśli możesz żyć z ciągiem SiteID, to:
CREATE TABLE Site (
SiteID ENUM('1', '2', '3', '4'),
... and the rest