NEW in Rule makes another nextval call?

Поиск
Список
Период
Сортировка
От Sven Willenberger
Тема NEW in Rule makes another nextval call?
Дата
Msg-id 1129815182.21857.16.camel@lanshark.dmv.com
обсуждение исходный текст
Ответы Re: NEW in Rule makes another nextval call?  (Richard Huxton <dev@archonet.com>)
Список pgsql-general
On a table ("customer") I have a rule set up that is designed to update
a "contacts" table  with a customer id once the customer is added to the
customer table. (Yes, this does seem backwards but it has to do with the
way this system of web-based signups gets translated into a customer
record).

CREATE TABLE customer (
custid serial primary key,
custname text not null,
startdate timestamp,
agent int);

CREATE RULE newcustomer AS
ON INSERT TO customer DO
    UPDATE contacts SET custid = NEW.custid
        WHERE contact.custname = NEW.custname;

Now when a new record is inserted into customer it gets a custid from
the nextval(<sequence name>) call; let's say it gets the value 296. What
I notice is that in the contacts table, the customer id ends up being
297; it's as if the rule's SET command is using the nextval() call
instead of the value retrieved by the actual insert command when
updating the contacts table. Is this intended behavior? or is the NEW
acting as a macro that is replace by "nextval(<sequence name>)" ?

Sven


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

Предыдущее
От: Jan Wieck
Дата:
Сообщение: Re: [HACKERS] 'a' == 'a '
Следующее
От: Michael Glaesemann
Дата:
Сообщение: Re: How to check is the table system