Trigger w PostgresSQL

Definicja triggera

CREATE TRIGGER set_mapa_tgr
BEFORE INSERT
ON m_trips_s
FOR EACH ROW
EXECUTE PROCEDURE set_mapa_ft();

Definicja funkcji triggera

CREATE OR REPLACE FUNCTION set_mapa_ft()
RETURNS trigger AS
$BODY$
BEGIN
IF NEW.h_opcja = 'Chełm' THEN
NEW.opcja2 = 'Chełm'; --NEW.opcja3;
RAISE NOTICE 'Wartosc2: %', NEW.opcja2 ;
ELSIF NEW.h_opcja = 'Warszawa' THEN
NEW.t_depPlace = 'Warszawa';
END IF;
RAISE NOTICE 'Wartosc: %', NEW.t_depPlace;
RETURN NEW;
END
$BODY$
LANGUAGE 'plpgsql' VOLATILE
COST 100;
ALTER FUNCTION set_mapa_ft() OWNER TO mapa;

Generowanie poleceń sql wykonujących insert do bazy

$ksiazka_id_table   = array(1980,2008);
$ksiazka_slowa      = ‚power dvd windows virtual Dub, total’; 
$ksiazka_table      = „slowa_klucze”;

$ksiazka_slowa      = strtr($ksiazka_slowa,’,.:;”‚,’     ‚));
$ksiazka_slowa_tab  = explode(‚ ‚, $ksiazka_slowa);

$cnt = count($ksiazka_slowa_tab);

for($i=0; $i<$cnt; $i++) {
    if(strlen($ksiazka_slowa_tab[$i])>1)
        $slowa_table[] = $ksiazka_slowa_tab[$i];
}

$cnt        = count($ksiazka_id_table);

for($i=0; $i<$cnt; $i++) {

    $ksiazka_id = $ksiazka_id_table[$i];
    $sql_data = implode(„‚), ($ksiazka_id, ‚”, $slowa_table);
    $sql = „insert into $ksiazka_table values ($ksiazka_id, ‚$sql_data’);”;
    mysql_query($sql);

    echo $sql . ‚<br>’;
}