sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL - deaktivering af begrænsninger

Ifølge tidligere kommentarer burde det være et problem. Når det er sagt, er der en kommando, der kan være det, du leder efter - den vil sætte begrænsningerne til udskudt, så de er markeret på COMMIT, ikke ved hver sletning. Hvis du kun laver én stor SLETT af alle rækkerne, vil det ikke gøre en forskel, men hvis du gør det i stykker, vil det gøre det.

SET CONSTRAINTS ALL DEFERRED

er det du leder efter i så fald. Bemærk, at begrænsninger skal markeres som DEFERRABLE før de kan udskydes. For eksempel:

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

Begrænsningen kan derefter udskydes i en transaktion eller funktion som følger:

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. Køre en mySQL-forespørgsel som et cron-job?

  2. Forståelse af systemkolonner i PostgreSQL

  3. Er lig med (=) vs. LIKE for datodatatype

  4. TO_SECONDS() Eksempler – MySQL