Gatilhos onde colocar???
Pessoal aonde eu coloco os trigges??? fiz o meu banco assim
E assim o gatilho:
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:
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
Curtidas 0
Respostas
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
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
01/09/2003
Obrigado pela resposta amigo, mas eu preciso colocar em que parte do codigo o trigges???
e para ficar assim???
Vai ficar assim amigo??? ou fica fora???
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
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+
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