Serius vel serius, multi obveniunt cum necessitate ut magnum aliquid in tabulis tabularum figat. Iam habeo dic quid melius facereet quam β satius est non facere. Hodie de secunda massae renovationis aspectus loquar - de triggers.
Exempli gratia, in mensa in qua aliquid figere debes, mala felis dependet ON UPDATEomnes mutationes ad quaedam aggregata transferens. Et debes omnia renovare (exempli gratia novum campum inchoare) tam diligenter ut haec aggregata non afficiantur.
Let's just disable the triggers!
BEGIN;
ALTER TABLE ... DISABLE TRIGGER ...;
UPDATE ...; -- ΡΡΡ Π΄ΠΎΠ»Π³ΠΎ-Π΄ΠΎΠ»Π³ΠΎ
ALTER TABLE ... ENABLE TRIGGER ...;
COMMIT;
Nam id omne - omne quod tentorium.
quod ALTER TABLE imponit Aditus exclusiva- Sera sub qua nemo parallele currit, etiam simplex SELECTaliquid de mensa legere non poterit. Hoc est, donec haec transactio finiatur, omnis qui etiam "modo legere" vult, exspectabit. Et meminimus UPDATE longum habemus ...
Cito vertere, dein cito vertere!
BEGIN;
ALTER TABLE ... DISABLE TRIGGER ...;
COMMIT;
UPDATE ...;
BEGIN;
ALTER TABLE ... ENABLE TRIGGER ...;
COMMIT;
Hic iam melior est rerum conditio, multo minus temporis exspectatio. Sed solae duae difficultates corrumpunt omnem pulchritudinem;
ALTER TABLE ipsa in mensa omnes alias operationes, etiam longas, observat SELECT
Dum felis non vigilat "volare per" aliqua mutatione ne nostrum quidem in convivio. Et aggregata non ingredietur, licet debet. Tribulatio!
Administrandi sessionem variables
Ita in priore versione in punctum fundamentale incidimus - aliquo modo docemus felis distinguere mutationes "nostrae" in tabula a "non nostra". "Nostra" omittuntur ut est, sed in "nostra" utitur. Hoc enim uti potes sessionem variables.
Mechanismus felis etiam afficitur conformatione variabilis session_replication_role. Sine additis instructionibus (default), triggers incendent cum replicatio munus est "originis" (default) vel "loci". Triggers enabled per speciem ENABLE REPLICA, Si non operatur current sessionis modus - "replica", et triggers per specificationem ENABLE ALWAYS, laborabit modo replicandi ratione currentis.
In primis inculcabo occasum non omnibus simul convenire, ut ALTER TABLEsed solum ad singularem nexum nostrum separatum. In integer, nulla ut pharetra accumsan.
SET session_replication_role = replica; -- Π²ΡΠΊΠ»ΡΡΠΈΠ»ΠΈ ΡΡΠΈΠ³Π³Π΅ΡΡ
UPDATE ...;
SET session_replication_role = DEFAULT; -- Π²Π΅ΡΠ½ΡΠ»ΠΈ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅
Conditio intra felis
Sed haec optio operatur omnibus triggers simul (vel opus est "alternis" triggers in antecessum quod disable non vis). Et si opus "Averte" una specifica felis?
Extensio parametri nomina ita scripta sunt: ββextensio nomen a puncto sequitur ac deinde ipsum nomen parametri, similibus nominibus obiecto in SQL. For example: plpgsql.variable_conflict.
Quia optiones extra-systema in processibus componi possunt qui moduli extensionem convenientem non onerant, PostgreSQL accipit values ββββad aliqua nomina in duobus.
Primum felis finalisare, aliquid simile:
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;
...
Obiter hoc fieri potest "ad lucrum", sine impedimento, per CREATE OR REPLACE ad munus felis. Et tunc in nexu speciali variabilis gallus "noster" sumus;
SET mycfg.my_table_convert_process = 'TRUE';
UPDATE ...;
SET mycfg.my_table_convert_process = ''; -- Π²Π΅ΡΠ½ΡΠ»ΠΈ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅