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

PostgreSQL - деактивиране на ограниченията

Според предишни коментари би трябвало да е проблем. Въпреки това има команда, която може да е това, което търсите - тя ще зададе ограниченията на отложени, така че да се проверяват при COMMIT, а не при всяко изтриване. Ако правите само едно голямо ИЗТРИВАНЕ на всички редове, няма да има разлика, но ако го правите на парчета, ще стане.

SET CONSTRAINTS ALL DEFERRED

е това, което търсите в такъв случай. Имайте предвид, че ограниченията трябва да бъдат маркирани като DEFERRABLE преди да могат да бъдат отложени. Например:

ALTER TABLE table_name
  ADD CONSTRAINT constraint_uk UNIQUE(column_1, column_2)
  DEFERRABLE INITIALLY IMMEDIATE;

След това ограничението може да бъде отложено в транзакция или функция, както следва:

CREATE OR REPLACE FUNCTION f() RETURNS void AS
$BODY$
BEGIN
  SET CONSTRAINTS ALL DEFERRED;

  -- Code that temporarily violates the constraint...
  -- UPDATE table_name ...
END;
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вземете името на месеца от дата в PostgreSQL

  2. Вмъкване на данни в таблици, свързани с външен ключ

  3. Моите любими разширения на PostgreSQL - втора част

  4. Променете колоните на PostgreSQL, използвани в изгледите

  5. java.math.BigInteger не може да бъде прехвърлен към java.lang.Integer