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
Comments
0 B
|👍
/👎
0 B
|👍
/👎