6 Lis 2009

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;
25 Lip 2008

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]))
     $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>';
}