Gatilhos onde colocar???

Delphi

01/09/2003

Pessoal aonde eu coloco os trigges??? fiz o meu banco assim
Create database ´d:\banco\Banco_gv.gdb´ page_size 1024 user ´SYSDBA´ password ´masterkey´; create table cliente ( cli_id integer not null, cli_nome varchar(80), cli_tipo char(1) not null check(cli_tipo in(´F´, ´J´, ´O´)), cli_data date, cli_end varchar(80), cli_numero integer, cli_cidade varchar(80), cli_fone varchar(10), cli_bairro varchar(80), cli_uf varchar(2), cli_cpf varchar(20), cli_obs varchar(80), constraint pk_cliente primary key(cli_id) );

E assim o gatilho:
Create trigger novo_cad for cliente before insert as begin new.cli_cod= gen_id(cli_cod,1); end

Onde eu coloco fora onde eu crio a tabela ou dentro??
Eu tentei dos dois jeitos mas esta dando erro

Ahh sim sera que o meu trigger esta certo?? por favor deem olhem para mim.. :cry:


Japa

Japa

Curtidas 0

Respostas

Koplin

Koplin

01/09/2003

O seu:

Create trigger novo_cad for cliente
before insert as //antes do insert ? ?
begin //cli_cod??
new.cli_cod= gen_id(cli_cod,1);
end

O certo:

Create trigger novo_cad for cliente
after insert as //após o insert
begin //o campo aqui tem q ser cli_id
new.cli_id= gen_id(cli_cod,1);
end

Supondo que vc criou o generator

CREATE GENERATOR cli_cod;


Veja se é isto. Tem um bom tempo q não mexo com IB.
Boa sorte


GOSTEI 0
Japa

Japa

01/09/2003

Obrigado pela resposta amigo, mas eu preciso colocar em que parte do codigo o trigges???
e para ficar assim???
Create database ´d:\banco\Banco_gv.gdb´ page_size 1024 user ´SYSDBA´ password ´masterkey´; create table cliente ( cli_id integer not null, cli_nome varchar(80), cli_tipo char(1) not null check(cli_tipo in(´F´, ´J´, ´O´)), cli_data date, cli_end varchar(80), cli_numero integer, cli_cidade varchar(80), cli_fone varchar(10), cli_bairro varchar(80), cli_uf varchar(2), cli_cpf varchar(20), cli_obs varchar(80), constraint pk_cliente primary key(cli_id), Create trigger novo_cad for cliente after insert as //após o insert begin //o campo aqui tem q ser cli_id new.cli_id= gen_id(cli_cod,1); end );

Vai ficar assim amigo??? ou fica fora???


GOSTEI 0
Afarias

Afarias

01/09/2003

1 - sua trigger tem q ser BEFORE INSERT (e não AFTER) pois *não* é possível alterar os valores nos campos depois do insert (ou update).

2 - vc não põe o código da trigger dentro do código da table -- são coisas destintas! -- Crie a tabela e então crie a trigger, ex:::

create table cliente (
cli_id integer not null,
cli_nome varchar(80),
/* mais campos */
constraint pk_cliente primary key(cli_id)
);

create generator cli_cod;

set term ^;

create trigger novo_cad for cliente before insert as
begin
new.cli_id = gen_id(cli_cod, 1);
end^



T+


GOSTEI 0
POSTAR