Mysql
 sql >> Base de données >  >> RDS >> Mysql

Plage d'entiers SQL lors de la création de tables

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