Referencia: https://firebirdsql.org/file/documentation/release_notes/html/en/3_0/rnfb30-psql-ddltriggers.html create or alter trigger TRG_PADRAO_CRIA_TAB active after create table position 0 as declare variable vs_Tabela varchar(50); begin vs_Tabela = rdb$get_context('DDL_TRIGGER', 'OBJECT_NAME'); -- Cria a PK execute statement 'alter table ' || :vs_Tabela || ' add constraint PK_' || :vs_Tabela || ' primary key (ID)'; -- Cria o generator execute statement 'create sequence GEN_' || :vs_Tabela || ' start with 0 increment by 1'; -- Cria a trigger que alimenta o generator execute statement 'create or alter trigger TRG_' || :vs_Tabela || '_BI0 for ' || :vs_Tabela || ' active before insert position 0 as begin /* Sobre...: Novo registro Revisao.: 1 */ if ((new.ID is null) or (new.ID<=0)) then new.ID = gen_id(GEN_'|| :vs_Tabela || ',1); end'; end