Re: [SQL] Auto increment field when updating?
От | Tom Lane |
---|---|
Тема | Re: [SQL] Auto increment field when updating? |
Дата | |
Msg-id | 2552.950711816@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Auto increment field when updating? (Robin Keech <robin@dialogue.co.uk>) |
Список | pgsql-sql |
Robin Keech <robin@dialogue.co.uk> writes: > ... Only some fields are written to each time the row is updated. > There is one field called 'count' that ONLY needs to increment every > time that particular row AND the field 'count' are updated. > I know that I can select the information, increment it and update it > back again, but is there any way of setting up the database to do this > automatically? I am using PostgreSQL 6.5. Sure, use a trigger. Here's one I use for a table that wants to attach a globally new sequence number to each created or updated row: CREATE FUNCTION my_phistory_trigger() RETURNS OPAQUE AS ' BEGIN NEW.sequenceNo := nextval(''my_phistory_Seq''); RETURN NEW; END; ' LANGUAGE 'plpgsql'; CREATE TRIGGER my_phistory_trigger BEFORE INSERT OR UPDATE ON my_phistory FOR EACH ROW EXECUTE PROCEDURE my_phistory_trigger(); but if you just want to increment the number that's there, you could do NEW.sequenceNo := OLD.sequenceNo + 1; (bearing in mind that this'll only work as an UPDATE trigger, not INSERT). See the programmer's guide for doco on trigger functions. regards, tom lane
В списке pgsql-sql по дате отправления: