From: | Richard Broersma Jr <rabroersma(at)yahoo(dot)com> |
---|---|
To: | Collin Peters <cadiolis(at)gmail(dot)com> |
Cc: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: Insert into VIEW using RULE. Not possible to use nextval()? |
Date: | 2007-05-03 19:26:42 |
Message-ID: | 13300.9416.qm@web31809.mail.mud.yahoo.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
--- Collin Peters <cadiolis(at)gmail(dot)com> wrote:
> The exact problem is that you can't use nextval() with an INSERTable VIEW
I apoligize if I am not understanding your problem correctly. I am unsure as to intent behind
using nextval() as opposed to currval().
I do not know if the following DDL will help but I can show you how I preform inserts across
multiple tables using the rule system:
CREATE RULE Vschematic_insert AS ON INSERT TO Docs.Vschematic
DO INSTEAD (
INSERT INTO Docs.Document ( did, doccode, docnum, docdisc)
VALUES ( DEFAULT, 'schematic', New.docnum, New.docdisc);
INSERT INTO Docs.Drawing ( did, doccode, title1, title2, title3)
VALUES ( Currval('Docs.Document_did_seq'), 'schematic', New.title1, New.title2, New.title3);
INSERT INTO Docs.Schematic ( did, doccode)
VALUES ( Currval('Docs.Document_did_seq'), 'schematic')
);
For reference the table DDL follows:
CREATE TABLE docs.document (
did serial PRIMARY KEY,
doccode varchar(30) not null,
docnum varchar(30) unique not null,
docdisc text not null default '',
constraint
document_doccode_chk
check ( doccode in ( 'cpf', 'logicsystem', 'processdetail',
'electricaldetail', 'locationplan', 'logicdiagram',
'loopdiagram', 'schematic', 'wiringdiagram', 'pid',
'isometric', 'airsupplydetail', 'mountingdetail',
'pnuematicdetail', 'functionaldiscription',
'datasheet', 'processmaterialspec',
'loopfoldermiscellaneous', 'loopfolderorficeplate',
'loopfolderinstallation', 'loopfolderswitch',
'loopfolderxmtrctrlind', 'loopfoldercontrolvalve',
'loopfolderanalyzer', 'loopfolderworkscope',
'loopfolderdocumentation')));
CREATE TABLE docs.drawing
(
did integer primary key references
docs.document(did) on delete cascade,
doccode varchar(30) not null,
title1 varchar(50) not null,
title2 varchar(50) not null,
title3 varchar(50) not null,
constraint
drawing_doccode_chk
check ( doccode in ( 'processdetail', 'electricaldetail', 'locationplan',
'logicdiagram', 'loopdiagram', 'schematic', 'pid',
'isometric', 'airsupplydetail', 'mountingdetail',
'pnuematicdetail'))) ;
CREATE TABLE docs.schematic
(
did integer primary key references
docs.drawing(did) on delete cascade,
doccode varchar(30) not null,
cid integer references equ.lcp(cid),
constraint
schematic_doccode_chk
check ( doccode = 'schematic')) ;
Regards,
Richard Broersma Jr.
From | Date | Subject | |
---|---|---|---|
Next Message | Gary Stainburn | 2007-05-04 15:49:54 | select slows from 3 seconds to 30 seconds |
Previous Message | Collin Peters | 2007-05-03 18:30:09 | Re: Insert into VIEW using RULE. Not possible to use nextval()? |