У меня проблема с триггером.Я создал триггер и функцию, чтобы отслеживать, сколько строк используется каждым пользователем в моей БД.Часть INSERT триггера и функции работают правильно, но DELETE ничего не делает.Когда я вставляю строки в свое приложение, количество строк увеличивается, когда я удаляю, количество строк не изменяется.
Вот ТАБЛИЦА, в которой я храню количество строк:
Table "public.rowcount"
Column | Type | Modifiers
------------+---------+-----------
user__id | integer | not null
table_name | text | not null
total_rows | bigint |
Вот мой ТРИГГЕР:
CREATE TRIGGER countrows_m_time
AFTER INSERT OR DELETE on m_time
FOR EACH ROW EXECUTE PROCEDURE count_rows_m_time();
А вот ФУНКЦИЯ:
CREATE OR REPLACE FUNCTION count_rows_m_time()
RETURNS TRIGGER AS
'
BEGIN
IF TG_OP = ''INSERT'' THEN
UPDATE rowcount
SET total_rows = total_rows + 1
WHERE table_name = TG_RELNAME
AND user__id = (SELECT user__id from vi_m_time_users where m_value_id = NEW.m_value_id);
ELSIF TG_OP = ''DELETE'' THEN
UPDATE rowcount
SET total_rows = total_rows - 1
WHERE table_name = TG_RELNAME
AND user__id = (SELECT user__id from vi_m_time_users where m_value_id = OLD.m_value_id);
END IF;
RETURN NULL;
END;
' LANGUAGE plpgsql;
Есть идеи?Большое спасибо, Ши