Nota do autor :as duas primeiras partes desta resposta estão incorretas. Eu pensei que o MySQL suportava
CHECK
restrições e isso não aconteceu. Ainda não. Para limitar as colunas a uma lista simples de valores, use o ENUM
abordagem no final desta resposta. Se a lógica for mais complicada (intervalo de valores, valor baseado em outra coluna, etc.), a única opção do MySQL é um gatilho. Você precisa de um
CHECK
restrição se for um 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 se você pode viver com uma string SiteID, então:
CREATE TABLE Site (
SiteID ENUM('1', '2', '3', '4'),
... and the rest