2017-01-07 6 views
1

У меня есть общий вопрос о триггерах. В любом случае, чтобы запрограммировать базу данных SQL так, чтобы всякий раз, когда запускается триггер, SQL сообщает нам, какие строки данных были удалены или отредактированы для соответствия своим критериям. В моем случае я использую postgreSQL, и у меня есть один конкретный триггер, который удаляет определенные строки, вставленные в таблицу, если выполняются определенные критерии. Что я могу добавить или изменить параметры в PostGreSQL, которые будут указывать мне какие строки и сколько строк были удалены в этом случае:SQL Trigger information

CREATE TRIGGER unknowns 
AFTER INSERT 
ON employees 
FOR EACH ROW 
EXECUTE PROCEDURE delete_rows(); 


CREATE OR REPLACE FUNCTION delete_rows() 
RETURNS trigger AS 
$BODY$ 
BEGIN 
DELETE FROM employees WHERE Customer = 'unknown'; 
RETURN NEW; 
END; 
$BODY$ 
LANGUAGE plpgsql VOLATILE 
COST 100; 
+0

@No Name, это нормально работает в моей базе данных. Пожалуйста, измените, если вы можете сделать это лучше, я просто хочу получить уведомление о том, сколько строк удаляется после того, как таблица будет вставлена. –

+0

Кажется, вы ищете триггер аудита. См. [Здесь] (http://cjauvin.blogspot.de/2013/05/impossibly-lean-audit-system-for.html) или [здесь] (http://okbob.blogspot.co.uk/2015/ 01/most-simply-implementation-of-history.html) или [здесь] (http://8kb.co.uk/blog/2015/01/19/copying-pavel-stehules-simple-history-table-but -with-the-jsonb-type /) –

ответ

1

Вы не обычно делают это на уровне базы данных.

Как правило, вы должны изменить триггер для хранения измененных данных в таблице архива/истории. Затем у вас будет запись данных, которые были изменены, когда они были изменены, и кто изменил ее.

Если вы специально хотите узнать об изменениях , инициированный в триггере, я не уверен, есть ли какой-либо механизм, чтобы отличать эти изменения от пользовательских изменений.

+0

В таблице архива/истории .... Как это возможно? Я хочу, чтобы записи данных были изменены/удалены. –

+1

@AQDeveloper. , , Один из методов - иметь триггеры, записывающие любые изменения в таблицу, вставляя их в таблицу истории/архива. –

+0

Как я могу сделать эту таблицу @ Gordon? Впервые я услышал о такой тактике. –