|
|
|
|
|
by netcraft
1560 days ago
|
|
we do that by setting a local variable before the query and then reading that in the triggers: ``` SET LOCAL foo.who_id = 'some-uuid';
UPDATE table
SET ...
`````` -- function to make getting the setting easier
DROP FUNCTION IF EXISTS get_who_id (text);
CREATE OR REPLACE FUNCTION get_who_id (default_value text DEFAULT null::text) RETURNS text AS $get_who_id$
DECLARE
who_id text;
BEGIN
BEGIN
who_id := current_setting('foo.who_id');
EXCEPTION
WHEN SQLSTATE '42704' THEN
RETURN default_value;
END;
IF (length(who_id) = 0) THEN
RETURN default_value;
END IF;
return who_id;
END
$get_who_id$ LANGUAGE plpgsql VOLATILE;
`````` CREATE OR REPLACE FUNCTION some_table_audit () RETURNS TRIGGER AS $some_table_audit$
DECLARE
who_id text;
BEGIN
who_id := get_who_id(null::text);
...
```Identifiers changed, but hopefully will give you the idea. |
|
If anyone is interested give me a shout out