Re: Deleting From View?

Поиск
Список
Период
Сортировка
От Jeanna Geier
Тема Re: Deleting From View?
Дата
Msg-id FBEGJLLJBCOMCDBJHIMEGEHCCCAA.jgeier@apt-cafm.com
обсуждение исходный текст
Ответ на Re: Deleting From View?  (Martijn van Oosterhout <kleptog@svana.org>)
Ответы Re: Deleting From View?  (Martijn van Oosterhout <kleptog@svana.org>)
Список pgsql-general
Thanks for the quick reply; that's one of the many reasons why this list is
so awesome...

I'm taking this project over from somebody else and am new to the DB side of
things, so I'm still learning - you're responses and thoughts are greatly
appreciated!


Definition:

Create view "elementdata"."measurement" As
SELECT e.elementid, da.projectname, da.square_unit AS square_unit_sq,
a.area::integer * su.units_per_sqfoot::integer AS area_sq, e.slope::integer
AS slope_inches, sa.slopearea::integer * cu.units_per_cufoot::integer AS
slopearea_sq, da.linear_unit AS linear_unit_lin, (p.perimeter *
lu.units_per_foot::double precision)::integer AS perimeter_lin,
da.cubic_unit AS cubic_unit_cu, e.height::integer *
lu.units_per_foot::integer AS height_lin, e.height::double
precision::integer * a.area::integer * cu.units_per_cufoot::integer AS
volume_cu, da.drawingid

FROM
  ((((((((((SELECT perimeter.elementid, perimeter.perimeter FROM
elementdata.perimeter
      UNION SELECT length.elementid, length.length AS perimeter FROM
elementdata.length)
      UNION SELECT circumference.elementid, circumference.circumference AS
perimeter FROM elementdata.circumference) p
      LEFT JOIN elementdata.area a USING (elementid))
      LEFT JOIN element e USING (elementid))
      LEFT JOIN elementdata.slopearea sa USING (elementid))
      JOIN layer la USING (layerid))
      JOIN drawing da USING (drawingid)) JOIN globaldata.linear_units lu
USING (linear_unit))
      JOIN globaldata.square_units su USING (square_unit))
      JOIN globaldata.cubic_units cu USING (cubic_unit));


DELETE measurement rule:

CREATE RULE delete_measurement AS ON DELETE
    TO elementdata.measurement
    DO INSTEAD UPDATE element SET height = 0 WHERE (element.elementid =
old.elementid);


UPDATE measurement rule:

CREATE RULE update_measurement AS ON UPDATE
    TO elementdata.measurement
    DO INSTEAD (UPDATE element SET height = (new.height_lin / (SELECT
linear_units.units_per_foot FROM globaldata.linear_units WHERE
((linear_units.linear_unit)::text = (old.linear_unit_lin)::text))), slope
                                   = new.slope_inches WHERE
(element.elementid = old.elementid); UPDATE drawing SET linear_unit =
new.linear_unit_lin, square_unit = new.square_unit_sq, cubic_unit =
                                   new.cubic_unit_cu WHERE
(drawing.drawingid = old.drawingid); );


Thanks again,
-Jeanna


-----Original Message-----
From: pgsql-general-owner@postgresql.org
[mailto:pgsql-general-owner@postgresql.org]On Behalf Of Martijn van
Oosterhout
Sent: Friday, January 05, 2007 9:47 AM
To: Jeanna Geier
Cc: pgsql-general
Subject: Re: [GENERAL] Deleting From View?


On Fri, Jan 05, 2007 at 09:42:09AM -0600, Jeanna Geier wrote:
>
> Hello List!
>
> I'm having an issue with my program; it's inserting into one record into a
> view (named 'measurement') twice ,which it's not supposed to be - so, I'm
> attempting to put a delete statement in the code to remove one of these
> records, but am getting an error.  (Will track down the real insert issue
> when I have more time, right now I just need to get this compiling....)

Normally you can't insert or delete from a view, because a view doesn't
exist, it's the result of a query. Obviously you have some rules setup
to allow inserting, which is obviously not doing the right thing if the
output suddenly creates two rows.

You're going to need to provide the complete definition of the
table+rules if you want a more detailed answer.

Have a nice day,
--
Martijn van Oosterhout   <kleptog@svana.org>   http://svana.org/kleptog/
> From each according to his ability. To each according to his ability to
litigate.


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

Предыдущее
От: Andreas Kretschmer
Дата:
Сообщение: Re: Deleting From View?
Следующее
От: Martijn van Oosterhout
Дата:
Сообщение: Re: Deleting From View?