<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Forum PostgreSQL - [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
		<link>https://forum.postgresql.org.pl/viewtopic.php?id=597</link>
		<description><![CDATA[Najświeższe odpowiedzi w [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!.]]></description>
		<lastBuildDate>Tue, 07 Jun 2011 08:05:05 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2564#p2564</link>
			<description><![CDATA[Faktycznie,przeoczylem....

Wszystko smiga, dziekuje bardzo za cale Wasze zainteresowanie.


Dziekuje i Pozdrawiam.

Patryk]]></description>
			<author><![CDATA[dummy@example.com (sali128)]]></author>
			<pubDate>Tue, 07 Jun 2011 08:05:05 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2564#p2564</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2559#p2559</link>
			<description><![CDATA[Nic dziwnego, że nie działa wyzwalanie dla INSERT i DELETE jak wpisałeś tylko dla UPDATE:

[code]CREATE TRIGGER sprzedaz_update
    AFTER UPDATE ON sprzedaz
    FOR EACH ROW
    EXECUTE PROCEDURE obrot_sprzedawcy();[/code]

[quote]Samo CREATE TRIGGER już podał rski.[/quote]

A propo przeoczeń w PostgreSQL polecam [url]http://stackoverflow.com/questions/6133107/extract-dateyyyy-mm-dd-from-timestamp-postgresql/6133146#6133146)[/url]]]></description>
			<author><![CDATA[dummy@example.com (gszpetkowski)]]></author>
			<pubDate>Tue, 07 Jun 2011 01:32:19 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2559#p2559</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2558#p2558</link>
			<description><![CDATA[Witam,

Dziekuje za odpowiedz. Robie wszystko tak jak nalezy,mam kod:


        CREATE FUNCTION obrot_sprzedawcy() RETURNS TRIGGER AS $$
DECLARE
    delta numeric(9,2);
BEGIN
    IF (TG_OP = 'INSERT') THEN
        UPDATE sprzedawca
        SET obrot_sprzedawcy = obrot_sprzedawcy + NEW.cena_finalna
        WHERE nr_sprzedawcy = NEW.nr_sprzedawcy;
        RAISE NOTICE 'Nowa sprzedaż, zwiększony obrót sprzedawcy % o % zł.',
            NEW.nr_sprzedawcy, NEW.cena_finalna;
        RETURN NEW;

    ELSIF (TG_OP = 'UPDATE') THEN
        delta := NEW.cena_finalna - OLD.cena_finalna;
        UPDATE sprzedawca
        SET obrot_sprzedawcy = obrot_sprzedawcy + delta
        WHERE nr_sprzedawcy = NEW.nr_sprzedawcy;
        RAISE WARNING 'Korekta sprzedaży, obrót sprzedawcy % różnica % zł.',
            NEW.nr_sprzedawcy, delta;
        RETURN NEW;

    ELSE
        UPDATE sprzedawca
        SET obrot_sprzedawcy = obrot_sprzedawcy - OLD.cena_finalna
        WHERE nr_sprzedawcy = OLD.nr_sprzedawcy;
        RAISE WARNING 'Anulowanie sprzedaży, obrót sprzedawcy % zmniejszony o % zł,',
            OLD.nr_sprzedawcy, OLD.cena_finalna;
        RETURN NEW;
    
    END IF;    
END;
$$ LANGUAGE plpgsql;

         
  CREATE TRIGGER sprzedaz_update
    AFTER UPDATE ON sprzedaz
    FOR EACH ROW
    EXECUTE PROCEDURE obrot_sprzedawcy();
    
    
    
----WYKORZYSTANIE----
--UPDATE:

s8201=> UPDATE sprzedaz SET cena_finalna=10000 WHERE nr_podwozia LIKE 'FR873432846523H98';
OSTRZEŻENIE:  Korekta sprzedaży, obrót sprzedawcy 631 różnica 100.00 zł.
UPDATE 1

--INSERT:   
    
     
     INSERT INTO klient(pesel, nazwisko, imie, kod_pocztowy, miasto, ulica_dom)
   values('78090726444','Banicki','Marian','80-312','Szymbark','Dolna 12');
     INSERT INTO sprzedaz VALUES ('78090726444', 'GD0920490329FD093', 631, 'Karta', '2009-04-20', 48440);
     
     
     
--DELETE:


    DELETE FROM sprzedaz WHERE pesel_klienta ~~ '78090726444' AND nr_podwozia ~~ 'GD0920490329FD093';





Nie dziala w tej funkcji opcja INSERT i DELETE . UPDATE jest ok-wyswietla komunikat.
W insercie i delete nie wyswietla komunikatow i nie zlicza tych nowych wartosci. W insercie najpierw wpisuje nowego klienta 
i nastepnie robie insert do tabeli sprzedaz jednak nic sie nie dzieje,tak samo przy delete. Cos robie zle? Moze zle trigger zapisalem?

Pozdr.]]></description>
			<author><![CDATA[dummy@example.com (sali128)]]></author>
			<pubDate>Mon, 06 Jun 2011 23:23:47 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2558#p2558</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2557#p2557</link>
			<description><![CDATA["A może (chociaż) Harry Potter?" ;)

[code]-- DROP FUNCTION IF EXISTS obrot_sprzedawcy();

CREATE FUNCTION obrot_sprzedawcy() RETURNS TRIGGER AS $$
DECLARE
    delta numeric(9,2);
BEGIN
    IF (TG_OP = 'INSERT') THEN
        UPDATE sprzedawca
        SET obrot_sprzedawcy = obrot_sprzedawcy + NEW.cena_finalna
        WHERE nr_sprzedawcy = NEW.nr_sprzedawcy;
        RAISE NOTICE 'Nowa sprzedaż, zwiększony obrót sprzedawcy % o % zł.',
            NEW.nr_sprzedawcy, NEW.cena_finalna;
        RETURN NEW;

    ELSIF (TG_OP = 'UPDATE') THEN
        delta := NEW.cena_finalna - OLD.cena_finalna;
        UPDATE sprzedawca
        SET obrot_sprzedawcy = obrot_sprzedawcy + delta
        WHERE nr_sprzedawcy = NEW.nr_sprzedawcy;
        RAISE WARNING 'Korekta sprzedaży, obrót sprzedawcy % różnica % zł.',
            NEW.nr_sprzedawcy, delta;
        RETURN NEW;

    ELSE
        UPDATE sprzedawca
        SET obrot_sprzedawcy = obrot_sprzedawcy - OLD.cena_finalna
        WHERE nr_sprzedawcy = OLD.nr_sprzedawcy;
        RAISE WARNING 'Anulowanie sprzedaży, obrót sprzedawcy % zmniejszony o % zł,',
            OLD.nr_sprzedawcy, OLD.cena_finalna;
        RETURN NEW;
    
    END IF;    
END;
$$ LANGUAGE plpgsql;[/code]

Samo CREATE TRIGGER już podał rski.

Przykład:

[code]grzegorz=> \t
Showing only tuples.
grzegorz=> INSERT INTO sprzedaz VALUES ('78090726444', 'RE93032MFSDI203VE', 631, 'Karta', '2011-06-06', 355.50);
NOTICE:  Nowa sprzedaż, zwiększony obrót sprzedawcy 631 o 355.50 zł.
INSERT 0 1
grzegorz=> SELECT obrot_sprzedawcy FROM sprzedawca WHERE nr_sprzedawcy = 631;
         20255.50

grzegorz=> UPDATE sprzedaz SET cena_finalna = 200 WHERE pesel_klienta ~~ '78090726444' AND nr_podwozia ~~ 'RE93032MFSDI203VE';
WARNING:  Korekta sprzedaży, obrót sprzedawcy 631 różnica -155.50 zł.
UPDATE 1
grzegorz=> SELECT obrot_sprzedawcy FROM sprzedawca WHERE nr_sprzedawcy = 631;
         20100.00

grzegorz=> DELETE FROM sprzedaz WHERE pesel_klienta ~~ '78090726444' AND nr_podwozia ~~ 'RE93032MFSDI203VE';
WARNING:  Anulowanie sprzedaży, obrót sprzedawcy 631 zmniejszony o 200.00 zł,
DELETE 1
grzegorz=> SELECT obrot_sprzedawcy FROM sprzedawca WHERE nr_sprzedawcy = 631;
         19900.00
[/code]

Właśnie dlatego narzekałem o ten klucz podstawowy w sprzedaz, żeby nie robić potem konstrukcji typu powyższego.

Te dodatkowe informacje (poziomy NOTICE i WARNING) służą dla czytelności, ale mogą być także umieszczane w logu pracy serwera (jeśli jest to wymagane, np. tylko poziom WARNING).]]></description>
			<author><![CDATA[dummy@example.com (gszpetkowski)]]></author>
			<pubDate>Mon, 06 Jun 2011 16:08:24 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2557#p2557</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2556#p2556</link>
			<description><![CDATA[Skladnia wydaje mi sie byc ok, a ma ktos pomysl na warunek DELETE?]]></description>
			<author><![CDATA[dummy@example.com (sali128)]]></author>
			<pubDate>Mon, 06 Jun 2011 15:39:26 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2556#p2556</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2554#p2554</link>
			<description><![CDATA[Może to Ci pomoże

[url]http://forum.postgresql.org.pl/viewtopic.php?id=21[/url]]]></description>
			<author><![CDATA[dummy@example.com (adamleon)]]></author>
			<pubDate>Mon, 06 Jun 2011 12:23:44 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2554#p2554</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2553#p2553</link>
			<description><![CDATA[Witam,

Poczytalem to co napisaliscie i przeanalizowalem wczesniejsze Triggery @gszpetkowski i doszedlem do czegos takiego-jednak nie dziala.

 CREATE FUNCTION obrot_sprzedawcy() RETURNS TRIGGER AS $obrot_sprzedawcy$
    BEGIN
   
    IF (TG_OP = 'DELETE') THEN
          
         ???
         
        
        ELSIF (TG_OP = 'UPDATE') THEN
    
    SET obrot_sprzedawcy = obrot_sprzedawcy + (NEW.cena_finalna - OLD.cena_finalna )
    WHERE nr_sprzedawcy = NEW.nr_sprzedawcy;
    RETURN NEW;
    
        ELSIF (TG_OP = 'INSERT') THEN
    
    SET obrot_sprzedawcy = obrot_sprzedawcy + NEW.cena_finalna
    WHERE nr_sprzedawcy = NEW.nr_sprzedawcy;
        RETURN NEW;
        END IF; 
    END;

$obrot_sprzedawcy$ LANGUAGE plpgsql;

CREATE TRIGGER obrot_sprzedawcy
AFTER INSERT OR UPDATE OR DELETE ON sprzedawca
    FOR EACH ROW EXECUTE PROCEDURE obrot_sprzedawcy() ;


1)Nie wiem co wpisac w DELETE?
2)Prosze przeanalizowac ,bo nie wiem czy to na pewno jest dobrze.


Dziekuje i Pozdrawiam,
Patryk]]></description>
			<author><![CDATA[dummy@example.com (sali128)]]></author>
			<pubDate>Mon, 06 Jun 2011 12:05:54 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2553#p2553</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2551#p2551</link>
			<description><![CDATA[[code]
CREATE TRIGGER sprzedaz_update
    AFTER UPDATE OR INSERT  OR DELETE ON sprzedaż
[/code]
Logikę funckji możesz uzależnić od operacji która wykonała triggera za pomocą stałej TG_OP, więcej info tutaj
[url]http://www.postgresql.org/docs/9.0/interactive/plpgsql-trigger.html.[/url]]]></description>
			<author><![CDATA[dummy@example.com (rski)]]></author>
			<pubDate>Sun, 05 Jun 2011 13:10:36 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2551#p2551</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2550#p2550</link>
			<description><![CDATA[Dziala swietnie. Dziekuje... A czy jest mozliwosc zapisania jednego Triggera dla wszystkich funkcji UPDATE,INSTERT DELETE zamiast 3 osobnych? Chodzi mi o swoiste laczenie ich.]]></description>
			<author><![CDATA[dummy@example.com (sali128)]]></author>
			<pubDate>Sun, 05 Jun 2011 11:33:33 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2550#p2550</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2549#p2549</link>
			<description><![CDATA[[code]CREATE FUNCTION aktualizuj_obrot_sprzedawcy_update() RETURNS TRIGGER AS $$
BEGIN
    UPDATE sprzedawca
    SET obrot_sprzedawcy = obrot_sprzedawcy + (NEW.cena_finalna - OLD.cena_finalna )
    WHERE nr_sprzedawcy = NEW.nr_sprzedawcy;

    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER sprzedaz_update
    AFTER UPDATE ON sprzedaz
    FOR EACH ROW
    EXECUTE PROCEDURE aktualizuj_obrot_sprzedawcy_update();[/code]]]></description>
			<author><![CDATA[dummy@example.com (gszpetkowski)]]></author>
			<pubDate>Thu, 02 Jun 2011 15:03:02 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2549#p2549</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2548#p2548</link>
			<description><![CDATA[Cos takiego dla UPDATE?

"


CREATE FUNCTION aktualizuj_obrot_sprzedawcy_update() RETURNS TRIGGER AS $$
BEGIN
    UPDATE sprzedawca
    SET obrot_sprzedawcy = obrot_sprzedawcy + (cena_finalna - NEW.cena_finalna)
    WHERE nr_sprzedawcy = NEW.nr_sprzedawcy;

    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER sprzedaz_insert 
    AFTER UPDATE ON sprzedaz
    FOR EACH ROW
    EXECUTE PROCEDURE aktualizuj_obrot_sprzedawcy_update();]]></description>
			<author><![CDATA[dummy@example.com (sali128)]]></author>
			<pubDate>Thu, 02 Jun 2011 14:27:52 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2548#p2548</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2547#p2547</link>
			<description><![CDATA[Gdyby to było konieczne, to wystarczy dodać kolejne wyzwalacze na UPDATE i DELETE analogicznie tak jak przy INSERT. Przykładowo jeżeli UPDATE miałby spowodować zmianę cena_finalna dla jakiejś sprzedaży, to w funkcji obsługi trigger'a wystarczy obliczyć różnicę między starą i nową cena_filnalna i zaaktulizować obrot_sprzedawcy.]]></description>
			<author><![CDATA[dummy@example.com (gszpetkowski)]]></author>
			<pubDate>Thu, 02 Jun 2011 14:19:11 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2547#p2547</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2546#p2546</link>
			<description><![CDATA[Bardzo dziekuje, o to wlasnie mi chodzilo. Wszystko dziala poprawnie. A jesli bym chcial przerobic go tak,aby nie byl on typu " and forget" co trzeba zmienic /dodac?

Pozdr.Patryk]]></description>
			<author><![CDATA[dummy@example.com (sali128)]]></author>
			<pubDate>Thu, 02 Jun 2011 14:09:28 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2546#p2546</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2543#p2543</link>
			<description><![CDATA[Wygląda na to, że działa, choć nie jestem eskpertem od wyzwalaczy i najlepiej niech ktoś lepiej obeznany mnie skoryguje jeśli trzeba.

DDL:

[code]DROP TABLE IF EXISTS sprzedaz;
DROP TYPE IF EXISTS sposob_zaplaty;
DROP TABLE IF EXISTS sprzedawca;
DROP FUNCTION IF EXISTS aktualizuj_obrot_sprzedawcy();

CREATE TABLE sprzedawca
(
    nr_sprzedawcy smallint PRIMARY KEY,
    imie text,
    nazwisko text NOT NULL,
    obrot_sprzedawcy numeric(11, 2) DEFAULT 0 NOT NULL
);

CREATE TYPE sposob_zaplaty AS ENUM ('Gotowka', 'Karta', 'Przelew', 'Raty');

CREATE TABLE sprzedaz
(
    pesel_klienta char(11), -- REFERENCES klient(pesel)
    nr_podwozia varchar(17), -- REFERENCES samochod(nr_podwozia)
    nr_sprzedawcy smallint REFERENCES sprzedawca(nr_sprzedawcy),
    sposob_zaplaty sposob_zaplaty,
    data_sprzedazy date,
    cena_finalna numeric(9,2) NOT NULL
);[/code]

Utworzenie funkcji oraz wyzwalacza:

[code]CREATE FUNCTION aktualizuj_obrot_sprzedawcy() RETURNS TRIGGER AS $$
BEGIN
    UPDATE sprzedawca
    SET obrot_sprzedawcy = obrot_sprzedawcy + NEW.cena_finalna
    WHERE nr_sprzedawcy = NEW.nr_sprzedawcy;

    RETURN NEW;
END;
$$ LANGUAGE plpgsql;

CREATE TRIGGER sprzedaz_insert 
    AFTER INSERT ON sprzedaz
    FOR EACH ROW
    EXECUTE PROCEDURE aktualizuj_obrot_sprzedawcy();[/code]

DML:

[code]INSERT INTO sprzedawca (nr_sprzedawcy, imie, nazwisko) VALUES
    (231, 'Marek', 'Malczewski'),
    (331, 'Stefan', 'Kowalski'),
    (431, 'Marek', 'Małecki'),
    (531, 'Piotr', 'Wojciechowski'),
    (631, 'Marcin', 'Kowalski'),
    (731, 'Wojtek', 'Nowak'),
    (831, 'Michał', 'Iczewski');

INSERT INTO sprzedaz VALUES
    ('49081109323', 'J3496R0953JH75936', 231, 'Gotowka', '2009-04-21', '41000'),
    ('91052306411', 'DE74930JB83240523', 431, 'Karta', '2009-04-29', '8000'),
    ('91102706512', 'PS86094J3829A3455', 431, 'Przelew', '2009-05-03', '30000'),
    ('91052306411', 'AF749305TG7345920', 631, 'Raty', '2009-06-01', '10000'),
    ('87061105956', 'TR7593YT827364J84', 531, 'Gotowka', '2009-04-12', '21000'),
    ('70012309765', 'DE47294675HG73493', 831, 'Gotowka', '2009-07-05', '23200'),
    ('76091189765', 'FR873432846523H98', 631, 'Karta', '2009-07-25', '9900'),
    ('71011123412', 'WE546278TH6348293', 731, 'Raty', '2009-07-17', '12400'),
    ('57012305645', 'SE647THR673482034', 231, 'Przelew', '2009-08-06', '38000'),
    ('57012306645', 'FDJERI34782475623', 431, 'Przelew', '2009-08-14', '14300'),
    ('54020102345', 'GF3274374HG347248', 731, 'Raty', '2009-10-27', '20400'),
    ('48090720234', 'TU47349JDS8231032', 831, 'Gotowka', '2009-10-22', '19200'),
    ('78090726345', 'RE93032MFSDI20390', 231, 'Karta', '2009-02-07', '11230');[/code]

Wynik:

[code]TABLE sprzedawca;
 nr_sprzedawcy |  imie  |   nazwisko    | obrot_sprzedawcy 
---------------+--------+---------------+------------------
           331 | Stefan | Kowalski      |             0.00
           531 | Piotr  | Wojciechowski |         21000.00
           631 | Marcin | Kowalski      |         19900.00
           431 | Marek  | Małecki       |         52300.00
           731 | Wojtek | Nowak         |         32800.00
           831 | Michał | Iczewski      |         42400.00
           231 | Marek  | Malczewski    |         90230.00
(7 rows)[/code]

Kilka uwag:

[list=*]
[*]sposob_zaplaty IMO prościej potraktować jako typ wyliczeniowy[/*]
[*]obrot_sprzedawcy jako numeric, 11 cyfr znaczących daje przy dwucyfrowej skali maksymalną sumę 999 999 999.99 zł (czyli poniżej 1 mld zł)[/*]
[*]Typ text pamięciowo i wydajnościowo to jest praktycznie to samo, co varchar(n) (vide [url=http://www.depesz.com/index.php/2010/03/02/charx-vs-varcharx-vs-varchar-vs-text/]tutaj[/url]), a jest bezpieczniejszy jeżeli nie ma [b]absolutnej[/b] pewności co do maksymalnej długości[/*]
[*]W sprzedaz brakuje klucza podstawowego, zamiast umieszczania pesel_klienta bezpośrednio może lepiej jest wrzucić id_klienta (1, 2, 3 etc.), analogicznie z nr_podwozia wraz z tabelą samochod[/*]
[*]Ew. pesel (o ile to konieczne) można walidować (np. [url=http://grzegorzdrozd.pl/2011/04/pesel-w-postgresql/]tutaj[/url]), czy też utworzyć dedykowany typ danych[/*]
[*]Naturalnie obrot_sprzedawcy (sprzedawca) nie zaaktualizuje się jeżeli któraś cena_finalna (sprzedaz) z jakichś przeczyn miałaby ulec aktualizacji via UPDATE, podobnie wygląda jeżeli któraś sprzedaż maiałaby zostać anulowana via DELETE post factum. Innymi słowy teraz jest [u]"Insert and forget"[/u][/*]
[/list]]]></description>
			<author><![CDATA[dummy@example.com (gszpetkowski)]]></author>
			<pubDate>Thu, 02 Jun 2011 03:36:17 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2543#p2543</guid>
		</item>
		<item>
			<title><![CDATA[Odp: [POMOC] Przygotowanie TRIGGERA do projektu. Pilne!]]></title>
			<link>https://forum.postgresql.org.pl/viewtopic.php?pid=2542#p2542</link>
			<description><![CDATA[Dokladnie, dla kazdego sprzedawcy automatycznie powinien dopisac obrot.]]></description>
			<author><![CDATA[dummy@example.com (sali128)]]></author>
			<pubDate>Wed, 01 Jun 2011 21:29:02 +0000</pubDate>
			<guid>https://forum.postgresql.org.pl/viewtopic.php?pid=2542#p2542</guid>
		</item>
	</channel>
</rss>
