<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Forum PostgreSQL - anulowanie wpisu - wyzwalacz]]></title>
	<link rel="self" href="http://forum.postgresql.org.pl/extern.php?action=feed&amp;tid=455&amp;type=atom"/>
	<updated>2010-06-22T14:53:11Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.postgresql.org.pl/viewtopic.php?id=455</id>
		<entry>
			<title type="html"><![CDATA[Odp: anulowanie wpisu - wyzwalacz]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2106#p2106"/>
			<content type="html"><![CDATA[To może zmień tego triggera na before insert co?]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2010-06-22T14:53:11Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2106#p2106</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: anulowanie wpisu - wyzwalacz]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2105#p2105"/>
			<content type="html"><![CDATA[s to tylko przykład w rzeczywistości wygląda to tak:
[code]
CREATE OR REPLACE FUNCTION pojazdy.f_tri_ai_xxx() RETURNS trigger AS
$$
DECLARE
idpk_poj INTEGER;
idpk_info_diag SMALLINT;
int_nr_diag INTEGER;
czas TIMESTAMP;
BEGIN
idpk_info_diag := NEW.idfk_nr_diag;    
idpk_poj := (trim(leading '_' from TG_TABLE_NAME)::varchar)::integer; 
int_nr_diag :=pojazdy.f_sint_nr_info_diag_int(idpk_info_diag);

IF (int_nr_diag >=16 AND int_nr_diag <=25) THEN 
   EXECUTE 'INSERT INTO pojazdy.t_dg (dt,idfk_poj,idfk_diag)
            VALUES ('''||NEW.dt_data_czas||''', '||idpk_poj||', '||idpk_info_diag||')';
   RETURN NEW;
ELSE
  IF (pojazdy.f_int_int_if_start_bool(idpk_poj,idpk_info_diag)= TRUE) THEN 
     IF(pojazdy.f_int_int_t_actual_bool(idpk_poj, idpk_info_diag) = FALSE) THEN 
      
          EXECUTE 'INSERT INTO pojazdy.t_actual (dt_dg,idfk_poj,idfk_diag)
               VALUES ('''||NEW.dt_data_czas||''', '||idpk_poj||', '||idpk_info_diag||')';

               EXECUTE 'INSERT INTO pojazdy.t_dg (dt,idfk_poj,idfk_diag)
                         VALUES ('''||NEW.dt_data_czas||''', '||idpk_poj||', '||idpk_info_diag||')';
        RETURN NEW;
     ELSE 
       RETURN NULL;
     END IF;
  ELSE
       IF(pojazdy.f_int_int_if_start_exists_bool(idpk_poj,idpk_info_diag)=TRUE)THEN
      czas := pojazdy.f_int_int_start_dt(idpk_poj,idpk_info_diag); 

              EXECUTE 'INSERT INTO pojazdy.t_history (dt_start,dt_stop,idfk_poj,idfk_diag)
               VALUES ('''||czas||''','''||NEW.dt_data_czas||''', '||idpk_poj||', '||idpk_info_diag||')';
  
              EXECUTE 'DELETE  FROM pojazdy.t_actual
               WHERE idfk_poj = '||idpk_poj||' AND idfk_diag = '||pojazdy.f_int_idpk_info_diag_sint(idpk_poj,int_nr_diag-100)||'';
              
               EXECUTE 'INSERT INTO pojazdy.t_dg (dt,idfk_poj,idfk_diag)
                         VALUES ('''||NEW.dt_data_czas||''', '||idpk_poj||', '||idpk_info_diag||')';
          RETURN NEW;
       ELSE
            RETURN NULL;
       END IF;
  END IF;
END IF;
END;
$$
LANGUAGE PLPGSQL;
[/code]]]></content>
			<author>
				<name><![CDATA[WitekS]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=760</uri>
			</author>
			<updated>2010-06-22T08:29:27Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2105#p2105</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: anulowanie wpisu - wyzwalacz]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2103#p2103"/>
			<content type="html"><![CDATA[No i jeszcze procedurę bo nie wiem co to za zmienna 's']]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2010-06-18T16:31:52Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2103#p2103</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: anulowanie wpisu - wyzwalacz]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2099#p2099"/>
			<content type="html"><![CDATA[definicja wyzwalacza
[code]
DROP TRIGGER IF EXISTS tri_ai_xxx ON pojazdy._xxx ;
CREATE TRIGGER tri_ai_xxx
AFTER
INSERT
ON pojazdy._xxx 
FOR EACH ROW
EXECUTE PROCEDURE pojazdy.f_tri_ai_xxx();
[/code]]]></content>
			<author>
				<name><![CDATA[WitekS]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=760</uri>
			</author>
			<updated>2010-06-18T10:25:57Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2099#p2099</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Odp: anulowanie wpisu - wyzwalacz]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2096#p2096"/>
			<content type="html"><![CDATA[Musisz pokazać definicję wyzwalacza.]]></content>
			<author>
				<name><![CDATA[rski]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=26</uri>
			</author>
			<updated>2010-06-17T18:14:42Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2096#p2096</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[anulowanie wpisu - wyzwalacz]]></title>
			<link rel="alternate" href="https://forum.postgresql.org.pl/viewtopic.php?pid=2093#p2093"/>
			<content type="html"><![CDATA[mam wyzwalacz w którym sprawdzam czy dany rekord może zostać wpisany 
[code]
...
IF (s > 1) THEN
   RETURN NEW;
ELSE
   RETURN NULL;
END IF;
...
[/code]
ale wpisuje mi do tabeli niezależnie od tego jaki jest wynik sprawdzenia IF-em
czy anulowanie wpisu do tabeli w wyzwalaczu jest może realizowane innym sposobem np EXIT zamiast RETURN NULL???]]></content>
			<author>
				<name><![CDATA[WitekS]]></name>
				<uri>https://forum.postgresql.org.pl/profile.php?id=760</uri>
			</author>
			<updated>2010-06-16T10:46:02Z</updated>
			<id>https://forum.postgresql.org.pl/viewtopic.php?pid=2093#p2093</id>
		</entry>
</feed>
