BUG #1781: result of cascading triggers not available until function exits.

Поиск
Список
Период
Сортировка
От Andrew Smith
Тема BUG #1781: result of cascading triggers not available until function exits.
Дата
Msg-id 20050723095948.6353FF0B16@svr2.postgresql.org
обсуждение исходный текст
Ответы Re: BUG #1781: result of cascading triggers not available  (Stephan Szabo <sszabo@megazone.bigpanda.com>)
Список pgsql-bugs
The following bug has been logged online:

Bug reference:      1781
Logged by:          Andrew Smith
Email address:      andrew@asmith.id.au
PostgreSQL version: 7.4.6
Operating system:   Debian GNU/Linux 3.1
Description:        result of cascading triggers not available until
function exits.
Details:

CREATE TABLE master(value INTEGER);
CREATE TABLE detail(value INTEGER,parent INTEGER);

CREATE FUNCTION aftermaster() RETURNS TRIGGER AS '
BEGIN
    INSERT INTO detail(value,parent)
        VALUES(10,NEW.value);
    INSERT INTO detail(value,parent)
        VALUES(20,NEW.value);
    RETURN NULL;
END;
' LANGUAGE plpgsql;

CREATE TRIGGER aftermaster AFTER INSERT OR UPDATE ON master
FOR EACH ROW EXECUTE PROCEDURE aftermaster();

CREATE OR REPLACE FUNCTION dostuff() RETURNS VOID AS '
DECLARE
    counter INTEGER;
BEGIN
    INSERT INTO master(value) VALUES(1);
    SELECT COUNT(*) INTO counter FROM detail;
    RAISE NOTICE ''counter = %'',counter;
    RETURN NULL;
END
' LANGUAGE plpgsql;

/*
on PostgreSQL 8.0 log output is 'counter = 2'
but for version 7.4.6 log output is 'counter = 0'
*/

SELECT dostuff();
SELECT COUNT(*) FROM detail;

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: abstime bug
Следующее
От: Dave Chapeskie
Дата:
Сообщение: Re: BUG #1723: array_cat() bug when passed empty array