sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur tillåter man endast en rad för en tabell?

En UNIQUE begränsning tillåter flera rader med NULL värden, eftersom två NULL värden anses aldrig vara desamma.

Liknande överväganden gäller för CHECK begränsningar. De tillåter uttrycket att vara TRUE eller NULL (bara inte FALSE ). Återigen, NULL värden passerar kontrollen.

För att utesluta det, måste kolumnen definieras NOT NULL . Eller gör den till PRIMARY KEY eftersom PK-kolumner är definierade NOT NULL automatiskt. Detaljer:

Använd bara boolean :

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

CHECK begränsning kan vara så enkelt för en boolean kolumn. Endast TRUE är tillåtet.

Du kanske vill REVOKE (eller inte GRANT ) DELETE och TRUNCATE privilegier från public (och alla andra roller) för att förhindra att den enda raden någonsin tas bort. Gilla:

REVOKE DELETE, TRUNCATE ON public.onerow FROM public;


  1. Vilket är det bästa sättet att förkompilera JSP:er med Ant

  2. Ebean manuell dekryptering

  3. Android till Wamp-serveranslutning med Android Studio och PHP

  4. Varför returnerar inte denna sql-fråga några resultat som jämför flyttal?