Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQL-Ganzzahlbereich beim Erstellen von Tabellen

Anmerkung des Autors :Die ersten beiden Teile dieser Antwort sind falsch. Ich dachte, MySQL unterstützt CHECK Einschränkungen und es tat es nicht. Immer noch nicht. Um Spalten auf eine einfache Werteliste zu beschränken, verwenden Sie ENUM Ansatz am Ende dieser Antwort. Wenn die Logik komplizierter ist (Wertebereich, Wert basiert auf einer anderen Spalte usw.), ist die einzige MySQL-Option ein Trigger.

Sie benötigen einen CHECK Einschränkung, wenn es sich um einen INT handelt :

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

Oder:

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

Oder wenn Sie mit einer Zeichenfolge SiteID leben können, dann:

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