Författarens anteckning :de två första delarna av detta svar är felaktiga. Jag trodde att MySQL stödde CHECK
begränsningar och det gjorde det inte. Fortfarande inte. För att begränsa kolumner till en enkel lista med värden, använd ENUM
tillvägagångssätt i slutet av detta svar. Om logiken är mer komplicerad (intervall av värden, värde baserat på en annan kolumn, etc.), är det enda MySQL-alternativet en trigger.
Du behöver en CHECK
begränsning om det är 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 om du kan leva med en sträng SiteID då:
CREATE TABLE Site (
SiteID ENUM('1', '2', '3', '4'),
... and the rest