sql >> Database >  >> RDS >> SQLite

SQLite NOT NULL-beperking

Samenvatting :in deze tutorial leer je hoe je de SQLite NOT NULL . gebruikt beperking om ervoor te zorgen dat de waarden in een kolom niet NULL zijn .

Inleiding tot SQLite NOT NULL beperking

Wanneer u een tabel maakt, kunt u aangeven of een kolom NULL . accepteert waarden of niet. Standaard accepteren alle kolommen in een tabel NULL waarden behalve dat u expliciet NOT NULL gebruikt beperkingen.

Een NOT NULL definiëren beperking voor een kolom, gebruikt u de volgende syntaxis:

CREATE TABLE table_name (
    ...,
    column_name type_name NOT NULL,
    ...
);
Code language: SQL (Structured Query Language) (sql)

In tegenstelling tot andere beperkingen zoals PRIMARY KEY en CHECK , u kunt alleen NOT NULL definiëren beperkingen op kolomniveau, niet op tabelniveau.

Gebaseerd op de SQL-standaard, PRIMARY KEY moet altijd NOT NULL betekenen . SQLite staat echter NULL toe waarden in de PRIMARY KEY kolom behalve dat een kolom INTEGER PRIMARY KEY . is kolom of de tabel is een WITHOUT ROWID tabel of de kolom is gedefinieerd als een NOT NULL kolom.

Dit komt door een bug in sommige vroege versies. Als deze bug wordt opgelost om te voldoen aan de SQL-standaard, kan deze de legacy-systemen kapot maken. Daarom is besloten om NULL . toe te staan waarden in de PRIMARY KEY kolom.

Eenmaal een NOT NULL beperking is gekoppeld aan een kolom, elke poging om de kolomwaarde in te stellen op NULL zoals invoegen of bijwerken zal een schending van de beperking veroorzaken.

SQLite NOT NULL beperking voorbeeld

In het volgende voorbeeld wordt een nieuwe tabel gemaakt met de naam suppliers :

CREATE TABLE suppliers(
    supplier_id INTEGER PRIMARY KEY,
    name TEXT NOT NULL
);
Code language: SQL (Structured Query Language) (sql)

In dit voorbeeld is de supplier_id is de PRIMARY KEY kolom van de suppliers tafel. Omdat deze kolom is gedeclareerd als INTEGER PRIMARY KEY , het accepteert geen NULL waarden.

De name kolom wordt ook gedeclareerd met een NOT NULL beperking, dus het accepteert alleen niet-NULL-waarden.

De volgende instructie probeert een NULL . in te voegen in de name kolom van de suppliers tafel:

INSERT INTO suppliers(name)
VALUES(NULL);
Code language: SQL (Structured Query Language) (sql)

De instructie mislukt vanwege de NOT NULL beperking overtreding. Hier is de foutmelding:

SQL Error [19]: [SQLITE_CONSTRAINT]  Abort due to constraint violation (NOT NULL constraint failed: suppliers.name)Code language: CSS (css)

In deze tutorial heb je geleerd hoe je SQLite NOT NULL . gebruikt beperking om ervoor te zorgen dat waarden in een kolom niet NULL zijn.


  1. SQL Server Geheel getal converteren naar binaire tekenreeks

  2. PostgreSQL 9.0.4 volledig verwijderen van Mac OSX Lion?

  3. Hoe de datumnotatie in de Oracle-database te wijzigen

  4. Hoe een kolom in SQL te laten vallen?