Mysql
 sql >> Database >  >> RDS >> Mysql

Intervallo di numeri interi SQL durante la creazione di tabelle

Nota dell'autore :le prime due parti di questa risposta non sono corrette. Pensavo che MySQL supportasse CHECK vincoli e così non è stato. Ancora no. Per limitare le colonne a un semplice elenco di valori, utilizza ENUM approccio alla fine di questa risposta. Se la logica è più complicata (intervallo di valori, valore basato su un'altra colonna, ecc.), l'unica opzione MySQL è un trigger.

Hai bisogno di un CHECK vincolo se è un INT :

CREATE TABLE Site (
  SiteID INT,
  CONSTRAINT SiteID_Ck CHECK (SiteID IN (1, 2, 3, 4)),
  ... and the rest

Oppure:

CREATE TABLE Site (
  SiteID INT,
  CONSTRAINT SiteID_Ck CHECK (SiteID BETWEEN 1 AND 4),
  ... and the rest

O se puoi vivere con una stringa SiteID allora:

CREATE TABLE Site (
  SiteID ENUM('1', '2', '3', '4'),
  ... and the rest