Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PostgreSQL > Триггер


Автор: SneG0K 26.12.2010, 22:17
Есть триггерная ф-ция
Код

DECLARE
    fields record;
    user_type text;
BEGIN
    SELECT user_type
    FROM users.users 
    WHERE id = old.id;
    FOR fields IN
        SELECT field_id 
        FROM dicts.fields 
        WHERE dict = user_type
    LOOP
        DELETE 
        FROM dicts.fields_values 
        WHERE item_id = old.id 
            AND field_id = fields.field_id;
    END LOOP;
    RETURN OLD;
END;

И триггер, который вызывает эту функцию перед удалением записи из таблицы
Код

CREATE TRIGGER full_delete BEFORE DELETE ON users FOR EACH STATEMENT EXECUTE PROCEDURE "deleteUserDict"()


И вот при попытке удаления пишет такую вот гадость
Record old not assigned yet
Что делать?

Автор: LSD 29.12.2010, 12:23
Дык чего же ты хочешь создаешь STATEMENT триггер и хочешь в нем получить доступ к ROW.
Код

CREATE TRIGGER full_delete BEFORE DELETE ON users FOR EACH ROW EXECUTE PROCEDURE "deleteUserDict"()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)