Vous n'êtes pas identifié(e).
Pages : 1
Ciao dverite,
j'ai mis dans l'exemple la fonction qui marchait (cad avec la qualification de la table), l'erreur se produisait avec une fonction sans cette qualification. Mais comme je le précise c'était dû au fonctionnement de DBeaver.
Merci bien pour l'astuce !
Merci Guillaume,
vous avez éclairé ma lanterne !
J'utilise DBeaver pour effectuer mes tests et le schéma par défaut était redevenu "public" (suite à une fermeture/réouverture de l'outil je suppose), c'est taquin ! ;-)
Hello,
je dois adapter des triggers DB2 pour PG (v10.17).
Sur l'exemple ci-dessous j'avais l'erreur :
ERROR: relation "t2" does not exist
Où : PL/pgSQL function toto.upd_t2_col1() line 3 at SQL statement
la table "t2" existe pourtant bien dans le schéma "toto" ?!
J'ai déjà adapté d'autres triggers sans avoir ce souci de qualification,
Alors pourquoi avec celui-ci ?
Merci pour vôtre aide.
create or replace function upd_t2_col1() returns trigger
language plpgsql
as $$
begin
update toto.t2
set ts_envoi = (case
when new.col1 = 1
then current_timestamp
else null
end)
where colid = new.colid;
return new;
end;
$$;
drop trigger if exists trig1 on t1;
create trigger trig1
after update of col1 on t1
for each row
when (
(new.col1!=old.col1)
or
(new.col1 is null and old.col1 is not null)
or
(new.col1 is not null and old.col1 is null)
)
execute procedure upd_t2_col1();
Merci pour vos réponses. ;-)
Elo,
quelqu'un sait-il pourquoi cet "event trigger" ne rapporte t-il pas les ordres DROP alors qu'il serait censé le faire selon la documentation ?
au paragraphe 39.1 :
L'évènement ddl_command_start se déclenche juste avant l'exécution d'une commande CREATE, ALTER, DROP, ...
...
...
L'évènement ddl_command_end se déclenche juste après l'exécution de ces même ensembles de commandes...
...
et au paragraphe 39.2 Matrice de déclenchement des triggers sur événement...
CREATE OR REPLACE FUNCTION ddl_log_command_end()
RETURNS event_trigger
LANGUAGE plpgsql
SECURITY DEFINER
AS $function$
DECLARE
obj record;
BEGIN
FOR obj IN
SELECT *
FROM pg_catalog.pg_event_trigger_ddl_commands()
LOOP
RAISE NOTICE '% objet : % %.%',
obj.command_tag,
obj.object_type,
obj.schema_name,
obj.object_identity;
END LOOP;
END;
$function$;
CREATE EVENT TRIGGER ddl_log_command_end ON ddl_command_end
EXECUTE PROCEDURE ddl_log_command_end();
zof [7862]=# create table za (id int);
NOTICE: CREATE TABLE objet : table zof.zof.za
CREATE TABLE
zof [7862]=# alter table za add lib char(30);
NOTICE: ALTER TABLE objet : table zof.zof.za
ALTER TABLE
zof [7862]=# drop table za;
DROP TABLE
zof [7862]=#
Merci
Pages : 1