sql >> Database >  >> RDS >> Mysql

SQL Integer Range bij het maken van tabellen

Opmerking van de auteur :de eerste twee delen van dit antwoord zijn onjuist. Ik dacht dat MySQL CHECK ondersteunde beperkingen en dat gebeurde niet. Nog steeds niet. Om kolommen te beperken tot een eenvoudige lijst met waarden, gebruikt u de ENUM aanpak aan het einde van dit antwoord. Als de logica ingewikkelder is (bereik van waarden, waarde gebaseerd op een andere kolom, enz.), is de enige MySQL-optie een trigger.

U heeft een CHECK nodig beperking als het een INT . is :

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

Of:

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

Of als je kunt leven met een string SiteID, dan:

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



  1. Het installatieprogramma voor MySql Workbench vereist dat Visual C++ 2015 Redistributable Package is geïnstalleerd, maar het is al geïnstalleerd

  2. Voeg meerdere resultaatrijen van één kolom samen tot één, groepeer op een andere kolom

  3. Best practices voor MySQL-databaseoptimalisatie

  4. MySQL select lijkt erg traag, maar kan niet bedenken hoe te verbeteren?