Procedure, é correto fazer insert assim ?

Firebird

15/03/2008

Seguinte pessoal, estou pensando em usar procedures como o exemplo a baixo para fazer os inserts em várias tabelas relacionadas.

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

Sanses

Curtidas 0

Respostas

Igo_so

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


GOSTEI 0
Sanses

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


GOSTEI 0
POSTAR