SQLize Online / PHPize Online  /  SQLtest Online

A A A
Share      Blog   Popular
Copy Format Clear
CREATE TABLE documents (id int, data text); INSERT INTO documents values(1, '22.01.1985'); INSERT INTO documents values(2, '22.01.1985'); INSERT INTO documents values(2, '22.01.1985'); INSERT INTO documents values(2, '22.01.1985'); CREATE TABLE documents_changelog ( operation char(1) NOT NULL, stamp timestamp NOT NULL, userid text NOT NULL, empname text NOT NULL, salary integer); CREATE OR REPLACE FUNCTION process_emp_audit() RETURNS TRIGGER AS $documents_changelog$ BEGIN -- -- Добавление строки в emp_audit, которая отражает операцию, выполняемую в emp; -- для определения типа операции применяется специальная переменная TG_OP. -- IF (TG_OP = 'DELETE') THEN INSERT INTO documents_changelog SELECT 'D', now(), user, OLD.*; ELSIF (TG_OP = 'UPDATE') THEN INSERT INTO documents_changelog SELECT 'U', now(), user, NEW.*; ELSIF (TG_OP = 'INSERT') THEN INSERT INTO documents_changelog SELECT 'I', now(), user, NEW.*; END IF; RETURN NULL; -- возвращаемое значение для триггера AFTER игнорируется END; $documents_changelog$ LANGUAGE plpgsql; CREATE TRIGGER documents_changelog AFTER INSERT OR UPDATE OR DELETE ON documents FOR EACH ROW EXECUTE FUNCTION process_emp_audit(); UPDATE documents SET id = 4 where id=1; SELECT * from documents; SELECT * from documents_changelog
Stuck with a problem? Got Error? Ask ChatGPT!
Copy Clear