PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak zezwolić tylko na jeden wiersz na tabelę?

UNIQUE ograniczenie zezwala na wiele wierszy z NULL wartości, ponieważ dwa NULL wartości nigdy nie są uważane za takie same.

Podobne uwagi dotyczą CHECK ograniczenia. Pozwalają, aby wyrażenie było TRUE lub NULL (tylko nie FALSE ). Ponownie, NULL wartości przechodzą kontrolę.

Aby to wykluczyć, kolumna musi być zdefiniowany NOT NULL . Lub ustaw PRIMARY KEY ponieważ kolumny PK są zdefiniowane NOT NULL automatycznie. Szczegóły:

Po prostu użyj boolean :

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

CHECK ograniczenie może być tak proste dla boolean kolumna. Tylko TRUE jest dozwolone.

Możesz REVOKE (lub nie GRANT ) DELETE i TRUNCATE uprawnienia z public (i wszystkich innych ról), aby zapobiec usunięciu pojedynczego wiersza. Na przykład:

REVOKE DELETE, TRUNCATE ON public.onerow FROM public;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Java - data zapisana jako dzień wcześniej

  2. Różnica między językiem sql a językiem plpgsql w funkcjach PostgreSQL

  3. Jak zoptymalizować postgres zapytania

  4. Czy INSERT [...] ON CONFLICT można użyć do naruszeń kluczy obcych?

  5. Jak zarządzać bazami danych PostgreSQL z poziomu ClusterControl CLI