Revision c3ab29e6
Von Moritz Bunkus vor fast 10 Jahren hinzugefügt
sql/Pg-upgrade2/delete_cvars_on_trans_deletion_fix2.sql | ||
---|---|---|
1 |
-- @tag: delete_cvars_on_trans_deletion_fix2 |
|
2 |
-- @description: Bugfix 2 für das Löschen von benutzerdefinierten Variablen via Triggerfunktionen |
|
3 |
-- @depends: delete_cvars_on_trans_deletion_fix1 |
|
4 |
|
|
5 |
-- 2.1. Parametrisierte Backend-Funktion zum Löschen: |
|
6 |
CREATE OR REPLACE FUNCTION delete_custom_variables_with_sub_module(config_module TEXT, cvar_sub_module TEXT, old_id INTEGER) |
|
7 |
RETURNS BOOLEAN AS $$ |
|
8 |
BEGIN |
|
9 |
DELETE FROM custom_variables |
|
10 |
WHERE EXISTS (SELECT id FROM custom_variable_configs cfg WHERE (cfg.module = config_module) AND (custom_variables.config_id = cfg.id)) |
|
11 |
AND (COALESCE(sub_module, '') = cvar_sub_module) |
|
12 |
AND (trans_id = old_id); |
|
13 |
|
|
14 |
RETURN TRUE; |
|
15 |
END; |
|
16 |
$$ LANGUAGE plpgsql; |
Auch abrufbar als: Unified diff
Benutzerdefinierte Variablen via Trigger löschen Bugfix 2
Die Triggerfunktion selber sollte aus Performancegründen nicht »DELETE …
WHERE … IN (SELECT…)« nutzen, da dies bei PostgreSQL sehr langsam ist.