sql >> Database >  >> RDS >> PostgreSQL

Hoe kan ik slechts één rij voor een tabel toestaan?

Een UNIQUE beperking staat meerdere rijen toe met NULL waarden, omdat twee NULL waarden worden nooit als hetzelfde beschouwd.

Soortgelijke overwegingen zijn van toepassing op CHECK beperkingen. Ze zorgen ervoor dat de uitdrukking TRUE . is of NULL (alleen niet FALSE ). Nogmaals, NULL waarden komen voorbij de controle.

Om dat uit te sluiten, moet de kolom moet worden gedefinieerd NOT NULL . Of maak het de PRIMARY KEY aangezien PK-kolommen zijn gedefinieerd NOT NULL automatisch. Details:

Gebruik ook gewoon boolean :

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

De CHECK beperking kan zo eenvoudig zijn voor een boolean kolom. Alleen TRUE is toegestaan.

Misschien wil je REVOKE (of niet GRANT ) de DELETE en TRUNCATE privileges van public (en alle andere rollen) om te voorkomen dat de enkele rij ooit wordt verwijderd. Vind ik leuk:

REVOKE DELETE, TRUNCATE ON public.onerow FROM public;


  1. Postgres-uitzondering:de zoekopdracht heeft geen resultaten opgeleverd.

  2. Converteer BufferedInputStream naar afbeelding

  3. Hoe org.postgresql.geometric.PGpoint toe te wijzen aan Hibernate Type

  4. databases synchroniseren Mysql SQLite