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 (id int, document_id int, old_data text, new_data text ); 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 documents.id,documents.document_id,null, OLD.* from documents; ELSIF (TG_OP = 'UPDATE') THEN INSERT INTO documents_changelog SELECT documents.id,documents.document_id,NEW.*,OLD.* from documents ; ELSIF (TG_OP = 'INSERT') THEN INSERT INTO documents_changelog SELECT documents.id,documents.document_id,NEW.*,OLD.* from documents; 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