sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL - beperkingen uitschakelen

Volgens eerdere opmerkingen zou het een probleem moeten zijn. Dat gezegd hebbende, is er een commando waar je naar op zoek bent - het stelt de beperkingen in op uitgesteld, zodat ze worden gecontroleerd op COMMIT, niet bij elke verwijdering. Als je maar één grote DELETE van alle rijen doet, maakt het geen verschil, maar als je het in stukjes doet, zal het wel.

SET CONSTRAINTS ALL DEFERRED

is wat je zoekt in dat geval. Houd er rekening mee dat beperkingen moeten worden gemarkeerd als DEFERRABLE voordat ze kunnen worden uitgesteld. Bijvoorbeeld:

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

De beperking kan dan als volgt worden uitgesteld in een transactie of functie:

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. Failover &Failback voor PostgreSQL op Microsoft Azure

  2. Het einde van een lange variabele waarde in VBA inspecteren

  3. Vind dubbele records in MySQL

  4. Hoe de gemiddelde verkoop per dag te berekenen in MySQL