Triggers in pgadmin query tools
От | Francois Legrand |
---|---|
Тема | Triggers in pgadmin query tools |
Дата | |
Msg-id | 4D8CC8D9.2000103@lpnhe.in2p3.fr обсуждение исходный текст |
Ответы |
Re: Triggers in pgadmin query tools
(Guillaume Lelarge <guillaume@lelarge.info>)
|
Список | pgadmin-support |
Hi all, I have a table with a trigger. When I run an insert command from psql, the trigger is correctly fired, but if i run exactly the same command from the pgqdmin3 query tool, the trigger is not fired ! Is that normal ? Any clue ? F. --------------------------------------------------------------------------------------------------------------- PS : Here are the definitions : --------------------------------------------------------------------------------------------------------------- CREATE TABLE databases ( id_databases serial NOT NULL, hostname character varying, hostid character varying, dbname character varying, commentscharacter varying, CONSTRAINT databases_pkey PRIMARY KEY (id_databases), CONSTRAINT db_is_unique UNIQUE (hostname,hostid, dbname) ) WITH ( OIDS=TRUE ); --------------------------------------------------------------------------------------------------------------- CREATE TRIGGER tai_databases0 AFTER INSERT OR UPDATE OR DELETE ON databases FOR EACH ROW EXECUTE PROCEDURE update_sequences(); --------------------------------------------------------------------------------------------------------------- CREATE OR REPLACE FUNCTION update_sequences() RETURNS trigger AS $BODY$ DECLARE id_db_ int8 ; pos int8; shift_ int8 ; min_ int8; max_ int8; nextval_ int8; newval_ int8; seq varchar =''; sequences_ varchar[] ; BEGIN Select ARRAY['dbimage', 'exposure_file', 'exposure','dead','bias','flat','photflat','night','detrendset','subtraction', 'reference','release','access_mode','data_store','scheduler','object_type','log','code','action'] INTO sequences_; SELECT * FROM get_id_db() INTO id_db_ ; shift_:=10^12; min_:=shift_*id_db_; max_:=shift_*(id_db_+1)-1; FOR pos IN 1 .. array_upper(sequences_, 1) LOOP seq=sequences_[pos]||'_id_'||sequences_[pos]||'_seq'; SELECTnextval(seq) INTO nextval_ ; IF ((nextval_ > max_) OR (nextval_ < min_)) THEN SELECT setval(seq,min_,'true')INTO newval_; END IF; END LOOP; RETURN NEW; END; $BODY$ LANGUAGE 'plpgsql' VOLATILE SECURITY DEFINER COST 100; --------------------------------------------------------------------------------------------------------------- CREATE OR REPLACE FUNCTION get_id_db() RETURNS bigint AS $BODY$ DECLARE id_db_ int8 ; BEGIN id_db_:=0; SELECT id_databases INTO id_db_ FROM databases WHERE databases.hostname=hostname() AND databases.hostid=hostid() AND databases.dbname=current_database() ; IF id_db_ IS NULL THEN id_db_:=0; END IF; RETURN id_db_; END; $BODY$ LANGUAGE 'plpgsql' IMMUTABLE SECURITY DEFINER COST 100; --------------------------------------------------------------------------------------------------------------- CREATE OR REPLACE FUNCTION hostid() RETURNS character varying AS $BODY$ #!/bin/sh hostid $BODY$ LANGUAGE 'plsh' IMMUTABLE SECURITY DEFINER COST 100; --------------------------------------------------------------------------------------------------------------- CREATE OR REPLACE FUNCTION hostname() RETURNS character varying AS $BODY$ #!/bin/sh hostname $BODY$ LANGUAGE 'plsh' IMMUTABLE SECURITY DEFINER COST 100;
В списке pgadmin-support по дате отправления: