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