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

PostgreSQL - deaktivace omezení

Podle předchozích komentářů by to měl být problém. To znamená, že existuje příkaz, který může být tím, co hledáte - nastaví omezení na odložená, takže budou zkontrolována při COMMIT, nikoli při každém odstranění. Pokud uděláte jen jedno velké DELETE všech řádků, nebude to mít žádný vliv, ale pokud to uděláte po částech, bude.

SET CONSTRAINTS ALL DEFERRED

je to, co v tom případě hledáte. Všimněte si, že omezení musí být označena jako DEFERRABLE než mohou být odloženy. Například:

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

Omezení pak může být v transakci nebo funkci odloženo následovně:

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. Používání pokročilých funkcí Oracle JDeveloper pro databáze MySQL

  2. Oracle SQL Developer a PostgreSQL

  3. Automatické škálování s Amazon Aurora Serverless

  4. Změna tabulky migrace místnosti nepřidává nový sloupec a migrace je volána znovu a znovu