Hi Patric, This doesn't seem to be a question pertaining to the PERFORM queue.
If I understand you correctly, this should solve your problems, without the need for any RULES / TRIGGERS. CREATE TABLE y ( y1 int4 NOT NULL, y2 varchar, CONSTRAINT a PRIMARY KEY (y1) ) CREATE TABLE z ( z1 int4 NOT NULL, z2 varchar, CONSTRAINT zz PRIMARY KEY (z1) ) CREATE TABLE x ( x1 int4 NOT NULL, xy1 int4 NOT NULL, xz1 int4 NOT NULL, xy2 varchar, xz2 varchar, CONSTRAINT xa PRIMARY KEY (x1), CONSTRAINT xy1 FOREIGN KEY (xy1) REFERENCES y (y1) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT xz1 FOREIGN KEY (xz1) REFERENCES z (z1) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE NO ACTION ) INSERT INTO x (x1, xy1, xz1, xy2, xz2) SELECT 1, y1, z1, y2, z2 FROM y, z WHERE y1 = 1 AND z1 = 1; *Robins* On Jan 14, 2008 11:49 PM, Patric <[EMAIL PROTECTED]> wrote: > Hi, > There will be some flames i suppose. > Well I've a normalized database.. > For instance: > > create table Y ( pk, data... ); > create table Z ( pk , data... ); > > create table X ( char, references Y, references Z); > > SELECT * from X; > > Now I want to make a listing of the result set from X. > If there are references to Z or Y (not null refs), I want to display > that data too. > > Normally I would SELECT, to get that data, not in my case. > Nearly all queries will be SELECTs, no UPDATEs or INSERTs, so need to > optimize that case. > > The dirty little denormalization would look like this: > > create table X ( char, ref. to Y, ref. to Z, StoreY Y , StoreZ Z); > > On insert or update of Z or Y, I would update these two (StoreY, > StoreZ) columns by RULE or TRIGGER.. > I know this is not nice etc.. Codd would sue for this, but in my case > performance over beauty is ok. > I'm looking for something like UPDATE X set StoreY=(SELECT * FROM Y > WHERE pk=4) WHERE foreignID2Y = 4; > > Is there a away to accomplish this straightforward in a single > statement without doing loops and stuff in a serverside procedure? > > Thanks in advance, > Patric > > > > > ---------------------------(end of broadcast)--------------------------- > TIP 2: Don't 'kill -9' the postmaster >