PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да разрешим само един ред за таблица?

UNIQUE ограничението позволява множество редове с NULL стойности, защото две NULL стойностите никога не се считат за еднакви.

Подобни съображения важат за CHECK ограничения. Те позволяват изразът да бъде TRUE или NULL (само не FALSE ). Отново NULL стойностите преминават проверката.

За да изключите това, колонататрябва бъде дефиниран NOT NULL . Или го направете PRIMARY KEY тъй като PK колоните са дефинирани NOT NULL автоматично. Подробности:

Освен това просто използвайте boolean :

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

CHECK ограничението може да бъде толкова просто за boolean колона. Само TRUE е разрешено.

Може да искате REVOKE (или не GRANT ) DELETE и TRUNCATE привилегии от public (и всички други роли), за да предотвратите изтриването на един ред. Като:

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. Проблем за вмъкване с помощта на psycopg

  2. създайте таблица в postgreSQL

  3. PSQLException не се хваща

  4. eclipselink jpa генерира заявки за преброяване, използвайки COUNT(id) вместо COUNT(*)

  5. потребителят postgres стартира процес, който използва всички процесори на 100%.