Thread: function on trigger

function on trigger

From
Marcos Hercules Santos
Date:
hi guys

I'm newbie in Psql and I'm trying to build one function  in order to
count the products for each supplier. So i'm gonna put it quite simply
though this example


Please, consider a table called books with the following fields

bookid, title, price, idPublisher



and one another table called publisher

Idpublisher, name, city, Books


Being in that last field from Publisher, called book, I gotta have the
amount of published books for each publisher.

Re: function on trigger

From
David Johnston
Date:
On Aug 31, 2011, at 18:39, Marcos Hercules Santos <mhercs@gmail.com> wrote:

> hi guys
>
> I'm newbie in Psql and I'm trying to build one function  in order to
> count the products for each supplier. So i'm gonna put it quite simply
> though this example
>
>
> Please, consider a table called books with the following fields
>
> bookid, title, price, idPublisher
>
>
>
> and one another table called publisher
>
> Idpublisher, name, city, Books
>
>
> Being in that last field from Publisher, called book, I gotta have the
> amount of published books for each publisher.

Is there a question somewhere?


>
Do not be tempted by the dark side Marcos.  Create a view that uses a join and a count.  Only if you have significant
performanceissues would you then consider materializing that view. 

If you insist, or simply want to learn, read the sections on UPDATE, CREATE TRIGGER, and CREATE FUNCTION.  Try doing it
followingthose examples.  Ask more specific questions if something specific stumps you. 

Do it incrementally.  Get the raw SQL UPDATE working then create the trigger and function and get those working.  Then
combinethe two. 

David J.


Re: function on trigger

From
John R Pierce
Date:
On 08/31/11 3:39 PM, Marcos Hercules Santos wrote:
> I'm newbie in Psql and I'm trying to build one function  in order to
> count the products for each supplier. So i'm gonna put it quite simply
> though this example
>
>
> Please, consider a table called books with the following fields
>
> bookid, title, price, idPublisher
>
>
>
> and one another table called publisher
>
> Idpublisher, name, city, Books
>
>
> Being in that last field from Publisher, called book, I gotta have the
> amount of published books for each publisher.

get rid of the books field on your publisher table, thats dynamic and
changes as you add/remove books from the book table.  to get that data,
try...

     SELECT p.idPublisher, p.name, p.city, COUNT(b.bookid) AS books FROM
publisher p JOIN books b USING idPublisher GROUP BY p.idPublisher;

you could make this a view if its too cumbersome.

         CREATE VIEW publisher_books SELECT p.idPublisher, p.name,
p.city, COUNT(b.bookid) AS books FROM publisher p JOIN books b USING
idPublisher GROUP BY p.idPublisher;

     SELECT * from publisher_books;

and of course, add other WHERE conditions...

         SELECT books FROM publisher_books WHERE name=?;



--
john r pierce                            N 37, W 122
santa cruz ca                         mid-left coast


Re: function on trigger

From
Sim Zacks
Date:
On 09/01/2011 01:39 AM, Marcos Hercules Santos wrote: <blockquote
cite="mid:b3ba2b32-278f-4216-9de3-39ab2162fc23@y21g2000yqy.googlegroups.com"type="cite"><pre wrap="">hi guys
 

I'm newbie in Psql and I'm trying to build one function  in order to
count the products for each supplier. So i'm gonna put it quite simply
though this example


Please, consider a table called books with the following fields

bookid, title, price, idPublisher



and one another table called publisher

Idpublisher, name, city, Books


Being in that last field from Publisher, called book, I gotta have the
amount of published books for each publisher.

</pre></blockquote> One way to do this would be with a view, so you don't need the trigger. The other one would need to
beafter update, insert and delete. This would include code such as:<br /> update publisher set books=books[+|-]1 where
idpublisher=[new|old].idpublisher;<br/><br /> Sim<br /> 

Re: function on trigger

From
Marcos Hercules Santos
Date:
On Aug 31, 7:39 pm, Marcos Hercules Santos <mhe...@gmail.com> wrote:
> hi guys
>
> I'm newbie in Psql and I'm trying to build one function  in order to
> count the products for each supplier. So i'm gonna put it quite simply
> though this example
>
> Please, consider a table called books with the following fields
>
> bookid, title, price, idPublisher
>
> and one another table called publisher
>
> Idpublisher, name, city, Books
>
> Being in that last field from Publisher, called book, I gotta have the
> amount of published books for each publisher.


sorry guys,

the last field in the publisher table is for the amount of books
published by each Publisher


Idpublisher, name, city, Books, amount_Books_

Guys, I'm discarding creating any view.

I already have the query to count the data, but my problem is how to
insert this data in the amount_books_   using  function...


thank goodness for the reply