Re: simple rule question
От | will trillich |
---|---|
Тема | Re: simple rule question |
Дата | |
Msg-id | 20010512093251.A27628@serensoft.com обсуждение исходный текст |
Ответ на | simple rule question (Neil Conway <nconway@klamath.dyndns.org>) |
Список | pgsql-general |
On Sat, May 12, 2001 at 12:29:46AM -0400, Neil Conway wrote: > Hi everyone, > > This should be easy, but for some reason I can't figure it out. > > I want to create a rule (or a trigger or whatever) so that when > data is inserted into a certain table, one column of the > newly inserted row is replaced with the result of a function. > > In order words: > > INSERT INTO foo (simple, special) VALUES ('a', 'b'); > > Should become: > > INSERT INTO foo (simple, special) VALUES ('a', my_function('b')); this code is untested, and will probably reset your partition table. be a dupe at your own risk. create table _real_foo ( id serial, aFourthfield int8, field1 int4[], number3 float8, secondfld char(22), stamp timestamp default current_timestamp, other varchar(99), primary key(aFourthField,field1) ); create view foo as select * from _real_foo; create rule intercede_add as on insert to foo do instead ( insert into _real_foo( field1, secondfld, number3, aFourthField ) values ( new.field1, new.secondfld || new.field1, somethingelse(new.number3), somethingBasedOn(new.field1,new.aFourthField) ); ) ; create rule intercede_edit as on update to foo do instead ( update _real_foo set field1 = new.field1, secondfld = new.secondfld || new.field1, number3 = somethingelse(new.number3), somethingBasedOn(new.field1,new.aFourthField) ; ) ; i suppose it'd be educational, or at least entertaining, to have create rule INFINITY as on insert to RECURSE do instead insert into RECURSE ... -- What do I need manners for? I already got me a wife. -- Adam Pontipee, "Seven Brides for Seven Brothers" will@serensoft.com http://sourceforge.net/projects/newbiedoc -- we need your brain! http://www.dontUthink.com/ -- your brain needs us!
В списке pgsql-general по дате отправления: