Procedure, é correto fazer insert assim ?
Seguinte pessoal, estou pensando em usar procedures como o exemplo a baixo para fazer os inserts em várias tabelas relacionadas.
na tabela endereco o idendereco é do tipo longint(não é auto incremento). Antes do insert estou recuperando o valor do generator e colocando no id da tabela pai e na fk da tabela filha. É correto fazer isso, ou é preferível usar transações ? Pergunto isso pq estarei programando para o C# e não sei como recuperar o valor desta chave dentro de uma transação como se faz com o sql server.
Grato pela atenção
Sanses
CREATE PROCEDURE INSERT_CLIENTE( LOGRADOURO VARCHAR(20) CHARACTER SET WIN1252 DEFAULT ´´, NOME CHAR(20) CHARACTER SET WIN1252 DEFAULT ´´, IDS BIGINT DEFAULT 0) AS BEGIN ids = gen_id(GEN_ENDERECO, 1); insert into endereco (idendereco, logradouro) values (:ids, :logradouro); insert into cliente (nome, fkend) values (:nome, :ids); SUSPEND; END;
na tabela endereco o idendereco é do tipo longint(não é auto incremento). Antes do insert estou recuperando o valor do generator e colocando no id da tabela pai e na fk da tabela filha. É correto fazer isso, ou é preferível usar transações ? Pergunto isso pq estarei programando para o C# e não sei como recuperar o valor desta chave dentro de uma transação como se faz com o sql server.
Grato pela atenção
Sanses
Sanses
Curtidas 0
Respostas
Igo_so
15/03/2008
olá....
se vc estiver utilizando o fb 2.0, exite um novo recurso que pode te ajudar... ele tetorna o valor o id que foi salvo pela procedure...
insert into cliente (campo1,campo2) values(valo1,valo2) ruturning campo1 into :paramentro;
espero ter ajudado...
abraço
se vc estiver utilizando o fb 2.0, exite um novo recurso que pode te ajudar... ele tetorna o valor o id que foi salvo pela procedure...
insert into cliente (campo1,campo2) values(valo1,valo2) ruturning campo1 into :paramentro;
espero ter ajudado...
abraço
GOSTEI 0
Sanses
15/03/2008
ok
funcionou perfeitamente, capturei o retorno dentro da transação e inseri os registros em outra tabela corretamente. Mais a forma acima que eu apresentei não ésta errrada em se fazer não é ?
O único problema que vejo com ela, é que se na segunda tabela for inserir mais de um registro, não será possível. O que voces acham ?
sanses
funcionou perfeitamente, capturei o retorno dentro da transação e inseri os registros em outra tabela corretamente. Mais a forma acima que eu apresentei não ésta errrada em se fazer não é ?
O único problema que vejo com ela, é que se na segunda tabela for inserir mais de um registro, não será possível. O que voces acham ?
sanses
GOSTEI 0