копирование старой таблицы - триггер в sql \ plpgsql - PullRequest
2 голосов
/ 05 декабря 2011

у меня есть триггер для определенной таблицы в моей базе данных,

CREATE TRIGGER trig_trig
AFTER DELETE OR UPDATE OR INSERT ON A 
FOR EACH ROW
EXECUTE PROCEDURE trig_func();

в любом случае ... я хочу создать копию старой таблицы, а затем выполнить несколько тестов на разницу между двумя.

скопировать таблицу легко, просто я делаю:

CREATE OR REPLACE FUNCTION trig_func() RETURNS TRIGGER AS $$
BEGIN

CREATE TABLE temp as(SELECT * FROM A);
DROP TABLE temp;
return new; 
END;
$$ LANGUAGE plpgsql;

, но я хочу получить версию до и после изменения.это просто даст мне один из них, которые я попробовал:

CREATE TABLE temp as(SELECT * FROM OLD.A); 

или

CREATE TABLE temp as(SELECT * FROM NEW.A);

, но я просто получаю сообщение об ошибке.

кто-нибудь знает, как это сделать??

спасибо.матовый

1 Ответ

0 голосов
/ 05 декабря 2011

OLD и NEW - псевдозаписи. Строки, а не таблицы, вы не можете выбрать из их.

Я могу с трудом предложить, как это сделать , это , потому что не ясно, каково именно ваше намерение. Может быть, вы хотите создать одну копию BEFORE операции и одну AFTER? В отдельных триггерах?

...