<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - Trigger przed insertem]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=2171&amp;type=atom"/>
	<updated>2014-06-23T13:14:43Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=2171</id>
		<entry>
			<title type="html"><![CDATA[Odp: Trigger przed insertem]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5274#p5274"/>
			<content type="html"><![CDATA[OK, dzięki za odpowiedź- tylko ja mam postawione zadanie, że ma być to wykonane za pomocą triggera..]]></content>
			<author>
				<name><![CDATA[marcin16]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1958</uri>
			</author>
			<updated>2014-06-23T13:14:43Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5274#p5274</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Trigger przed insertem]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5272#p5272"/>
			<content type="html"><![CDATA[Po pierwsze - daj:

x = exists (select ... );

po drugie - do tego lepiej jest użyć excludion constraints: [url]http://www.depesz.com/2010/01/03/waiting-for-8-5-exclusion-constraints/[/url]]]></content>
			<author>
				<name><![CDATA[depesz]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1564</uri>
			</author>
			<updated>2014-06-22T19:26:28Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5272#p5272</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: Trigger przed insertem]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5271#p5271"/>
			<content type="html"><![CDATA[Witam
Ja inserty,update i delete robię w funkcji. W niej sprawdzam wszytko i robię operacje lub zwracam błąd. Triggery stosuje tylko do zapisu historii.
Dla mnie jest to wystarczające. Być może trigger będzie lepszy lub szybszy nie sprawdzałem

Przykład kasowania
[url]http://forum.postgresql.org.pl/viewtopic.php?id=534[/url]]]></content>
			<author>
				<name><![CDATA[adamleon]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=873</uri>
			</author>
			<updated>2014-06-22T10:56:27Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5271#p5271</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Trigger przed insertem]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=5270#p5270"/>
			<content type="html"><![CDATA[Witam, zaczynam dopiero zabawę z bazami danych i natrafiłem na pewien problem.. Otóż, mam za zadanie napisać trigger, który przed dodaniem wiersza do tabeli wizyty sprawdzi w tabeli grafik (lekarzy) czy można w ogóle dodać wizytę. Czyli żeby dodać wizytę termin wizyty i grafik danego lekarza muszą się na siebie nakładać.
Jednakże dostaję błąd: ERROR:  more than one row returned by a subquery used as an expression i nie wiem jak to zrobić żeby działało.. prosiłbym o pomoc. 

[code]
create function daty_check() returns trigger as '


declare
        x bool;
        licznik int4;

begin
        licznik = 0;

    
        x = ( select (grafik.pocz, grafik.kon) overlaps (new.data_rozp , new.data_zak)
                 from grafik, wizyta WHERE grafik.id_lekarza = NEW.id_lekarza);


        if x = false then

        raise notice '' x = false ''; 
                licznik = licznik + 1;    
        end if;


        if licznik = 0 then        
        raise notice '' mozna dodawac'';
        return new;
    

        else
        raise notice '' przedzialy sie pokrywaja  '';
        end if;
end;
' language 'plpgsql';



create trigger daty_check_t before insert on wizyta for each row execute procedure daty_check();

[/code]]]></content>
			<author>
				<name><![CDATA[marcin16]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=1958</uri>
			</author>
			<updated>2014-06-21T14:43:32Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=5270#p5270</id>
		</entry>
</feed>
