MAX() of 0 records.
От | Paul McGarry |
---|---|
Тема | MAX() of 0 records. |
Дата | |
Msg-id | 396535EF.8132CF80@opentec.com.au обсуждение исходный текст |
Ответы |
Re: MAX() of 0 records.
Re: MAX() of 0 records. |
Список | pgsql-sql |
Hello, I wish to perform the following query in a plsql function upon an update/insert/delete trigger: UPDATE entry_stats SET entry_maxprice=MAX(item_price) FROM item WHERE item.item_entry_id=NEW.item_entry_id AND item.item_live = 't'; However there will be situations where there are no records for a given item_entry_id with item_live='t'. Currently when I try do update/insert a record so that this occurs I get the following error 'ERROR: ExecutePlan: (junk) 'ctid' is NULL!' and the insert/update attempt is rolled back. In this scenario I want entry_stats.entry_maxprice to be set to zero (which is also the default value for that column if it's any help). Is there a good way of going about this or should I just be wrapping the whole thing up in an ==== IF (COUNT(*) FROM item WHERE item.item_entry_id=NEW.item_entry_id AND item.item_live = 't')>0 THENUPDATE ... =MAX() ... ELSEUPDATE SET ... =0 ... END IF ==== ? Thanks -- Paul McGarry mailto:paulm@opentec.com.au Systems Integrator http://www.opentec.com.au Opentec Pty Ltd http://www.iebusiness.com.au 6 Lyon Park Road Phone: (02) 9878 1744 North Ryde NSW 2113 Fax: (02) 9878 1755
В списке pgsql-sql по дате отправления: