Note de l'auteur :les deux premières parties de cette réponse sont incorrectes. Je pensais que MySQL supportait CHECK
contraintes et il ne l'a pas fait. Toujours pas. Pour limiter les colonnes à une simple liste de valeurs, utilisez le ENUM
approche à la fin de cette réponse. Si la logique est plus compliquée (plage de valeurs, valeur basée sur une autre colonne, etc.), la seule option MySQL est un déclencheur.
Vous avez besoin d'un CHECK
contrainte si c'est un INT
:
CREATE TABLE Site (
SiteID INT,
CONSTRAINT SiteID_Ck CHECK (SiteID IN (1, 2, 3, 4)),
... and the rest
Ou :
CREATE TABLE Site (
SiteID INT,
CONSTRAINT SiteID_Ck CHECK (SiteID BETWEEN 1 AND 4),
... and the rest
Ou si vous pouvez vivre avec une chaîne SiteID, alors :
CREATE TABLE Site (
SiteID ENUM('1', '2', '3', '4'),
... and the rest