sql >> Databáze >  >> RDS >> PostgreSQL

Jak povolit pouze jeden řádek pro tabulku?

UNIQUE omezení umožňuje více řádků s NULL hodnoty, protože dvě NULL hodnoty nejsou nikdy považovány za stejné.

Podobné úvahy platí pro CHECK omezení. Umožňují, aby výraz byl TRUE nebo NULL (jen ne FALSE ). Opět NULL hodnoty překročí kontrolu.

Chcete-li to vyloučit, sloupec musí být definováno NOT NULL . Nebo jej nastavte jako PRIMARY KEY protože sloupce PK jsou definovány NOT NULL automaticky. Podrobnosti:

Také stačí použít boolean :

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

CHECK omezení může být tak jednoduché pro boolean sloupec. Pouze TRUE je povoleno.

Možná budete chtít REVOKE (nebo ne GRANT ) DELETE a TRUNCATE oprávnění od public (a všechny ostatní role), aby se zabránilo smazání jednoho řádku. Jako:

REVOKE DELETE, TRUNCATE ON public.onerow FROM public;


  1. Připojte 2 sady na základě výchozího pořadí

  2. Žádná data extrahovaná z databáze MySQL při spuštění mé stránky JSP

  3. Když zadám kód dateadd nebo datediff, neustále se mi zobrazuje tato chyba ORA-00904 DATEADD INVALID IDENTIFIER.

  4. Jak mohu odečíst pomocí SQL v MYSQL mezi dvěma hodnotami data a času a získat výsledek v minutách nebo sekundách?