sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan tillader man kun én række til en tabel?

En UNIQUE begrænsning tillader flere rækker med NULL værdier, fordi to NULL værdier anses aldrig for at være de samme.

Lignende overvejelser gælder for CHECK begrænsninger. De tillader udtrykket at være TRUE eller NULL (bare ikke FALSE ). Igen, NULL værdier kommer forbi kontrollen.

For at udelukke det skal kolonnen skal være defineret NOT NULL . Eller gør det til PRIMARY KEY da PK-kolonner er defineret NOT NULL automatisk. Detaljer:

Brug også bare boolean :

CREATE TABLE public.onerow (
   onerow_id bool PRIMARY KEY DEFAULT TRUE
 , data text
 , CONSTRAINT onerow_uni CHECK (onerow_id)
);

CHECK begrænsning kan være så simpel for en boolean kolonne. Kun TRUE er tilladt.

Du ønsker måske at REVOKE (eller ikke GRANT ) DELETE og TRUNCATE privilegier fra public (og alle andre roller) for at forhindre, at den enkelte række nogensinde bliver slettet. Ligesom:

REVOKE DELETE, TRUNCATE ON public.onerow FROM public;


  1. mysql kombinere to forespørgsler til én forespørgsel

  2. databasen bliver ikke opdateret

  3. SQL Server-svarende til WM_CONCAT-funktionen

  4. MySQL FULL JOIN virker ikke, men RIGHT og LEFT join virker