sql >> Base de Datos >  >> RDS >> Mysql

Rango de enteros de SQL al crear tablas

Nota del autor :las dos primeras partes de esta respuesta son incorrectas. Pensé que MySQL admitía CHECK restricciones y no lo hizo. Todavía no lo hace. Para limitar las columnas a una lista simple de valores, use el ENUM enfoque al final de esta respuesta. Si la lógica es más complicada (rango de valores, valor basado en otra columna, etc.), la única opción de MySQL es un disparador.

Necesitas un CHECK restricción si es un INT :

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

O:

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

O si puede vivir con una cadena SiteID entonces:

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