Re: trying to learn plpqsql... so please forgive..

Поиск
Список
Период
Сортировка
От Josh Berkus
Тема Re: trying to learn plpqsql... so please forgive..
Дата
Msg-id 200211201427.41550.josh@agliodbs.com
обсуждение исходный текст
Ответ на Re: trying to learn plpqsql... so please forgive..  (Michiel Lange <michiel@minas.demon.nl>)
Список pgsql-sql
Michiel,

> And this function:
> CREATE FUNCTION add_cust() RETURNS INT4 AS ' -- SERIAL data type is really
> an INT4 (and some more).
> BEGIN
>          RETURN NEW.my_key;
> END;
> ' LANGUAGE 'plpgsql';
>
>   CREATE TRIGGER add_cust BEFORE INSERT ON mytable
>   FOR EACH ROW EXECUTE PROCEDURE add_cust();
>
> Ok, now I know it won't work... the idea was to use this with PHP in a
> webclient interface where the customer could give some information about
> him/herself and then would be registered with the customer number generated
> by the SERIAL type.
> Would it work if I did a CREATE TRIGGER add_cust AFTER INSERT... ? (mention
> the AFTER instead of BEFORE)

No, you can't return a value to the client from a Trigger.   Not ever.
Triggers modify data, and they can log stuff, but they can't return values to
the calling interface.

Now, what you could do is replace the whole insert with a function, doing:

SELECT add_cust( name, address, phone, credit_card);

Which does the inserting and returns the new id to the client.    This is a
solution I frequently use in my web apps.

-Josh Berkus




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

Предыдущее
От: Michiel Lange
Дата:
Сообщение: Re: trying to learn plpqsql... so please forgive..
Следующее
От: "Rajesh Kumar Mallah."
Дата:
Сообщение: why the difference?