Tsis ntev los sis tom qab, ntau tus tau ntsib nrog qhov yuav tsum tau kho ntau yam hauv cov ntaub ntawv teev tseg. kuv twb muaj lawm qhia kuv yuav ua li cas thiaj zoo dua, thiab yuav ua li cas - nws yog qhov zoo dua tsis ua nws. Hnub no kuv yuav tham txog qhov thib ob ntawm qhov hloov tshiab loj - hais txog qhov tshwm sim.
Piv txwv li, ntawm lub rooj uas koj yuav tsum tau kho ib yam dab tsi, ib tug phem trigger hangs ON UPDATE, hloov tag nrho cov kev hloov pauv rau qee qhov sib sau ua ke. Thiab koj yuav tsum tau hloov kho txhua yam (pib qhov chaw tshiab, piv txwv li) ua tib zoo kom cov kev sib sau no tsis cuam tshuam.
Cia li lov tes taw cov triggers!
BEGIN;
ALTER TABLE ... DISABLE TRIGGER ...;
UPDATE ...; -- ΡΡΡ Π΄ΠΎΠ»Π³ΠΎ-Π΄ΠΎΠ»Π³ΠΎ
ALTER TABLE ... ENABLE TRIGGER ...;
COMMIT;
Extension parameter npe tau sau raws li hauv qab no: lub npe txuas ntxiv ua raws li lub ntsiab lus thiab tom qab ntawd lub npe parameter nws tus kheej, zoo ib yam li tag nrho cov npe khoom hauv SQL. Piv txwv li: plpgsql.variable_conflict.
Vim tias cov kev xaiv tawm ntawm lub kaw lus tuaj yeem teeb tsa hauv cov txheej txheem uas tsis thauj khoom txuas ntxiv tsim nyog, PostgreSQL lees txais muaj nuj nqis rau txhua lub npe nrog ob yam.
Ua ntej, peb ua tiav qhov txhais, qee yam zoo li no:
BEGIN
-- ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΊΠΎΠ½Π²Π΅ΡΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Π²ΡΠ΅
IF current_setting('mycfg.my_table_convert_process') = 'TRUE' THEN
IF TG_OP IN ('INSERT', 'UPDATE') THEN
RETURN NEW;
ELSE
RETURN OLD;
END IF;
END IF;
...
Los ntawm txoj kev, qhov no tuaj yeem ua "rau cov txiaj ntsig", yam tsis muaj kev thaiv, dhau los CREATE OR REPLACE rau qhov kev ua haujlwm ntawm kev ua haujlwm. Thiab tom qab ntawd hauv kev sib txuas tshwj xeeb peb cock "peb" sib txawv:
SET mycfg.my_table_convert_process = 'TRUE';
UPDATE ...;
SET mycfg.my_table_convert_process = ''; -- Π²Π΅ΡΠ½ΡΠ»ΠΈ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅