Forfatterens note :de første to dele af dette svar er forkerte. Jeg troede, at MySQL understøttede CHECK
begrænsninger, og det gjorde den ikke. Det gør stadig ikke. For at begrænse kolonner til en simpel liste med værdier, skal du bruge ENUM
tilgang i slutningen af dette svar. Hvis logikken er mere kompliceret (værdiområde, værdi baseret på en anden kolonne osv.), er den eneste MySQL-mulighed en trigger.
Du skal bruge en CHECK
begrænsning, hvis det er en INT
:
CREATE TABLE Site (
SiteID INT,
CONSTRAINT SiteID_Ck CHECK (SiteID IN (1, 2, 3, 4)),
... and the rest
Eller:
CREATE TABLE Site (
SiteID INT,
CONSTRAINT SiteID_Ck CHECK (SiteID BETWEEN 1 AND 4),
... and the rest
Eller hvis du kan leve med en streng SiteID så:
CREATE TABLE Site (
SiteID ENUM('1', '2', '3', '4'),
... and the rest