sql >> Databasteknik >  >> RDS >> Mysql

SQL heltalsintervall när du skapar tabeller

Författarens anteckning :de två första delarna av detta svar är felaktiga. Jag trodde att MySQL stödde CHECK begränsningar och det gjorde det inte. Fortfarande inte. För att begränsa kolumner till en enkel lista med värden, använd ENUM tillvägagångssätt i slutet av detta svar. Om logiken är mer komplicerad (intervall av värden, värde baserat på en annan kolumn, etc.), är det enda MySQL-alternativet en trigger.

Du behöver en CHECK begränsning om det är en INT :

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

Eller:

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

Eller om du kan leva med en sträng SiteID då:

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



  1. ORA-01264 i fysisk standby

  2. Trigga innan du tar bort MySql

  3. Hur man får den sista raden i ett Oracle en tabell

  4. nullvalue:Visa NULL-värden i SQLite