[firebase-br] GEN_ID TRIGER & Valores por Defeito

Erick Sasse erick.sasse em cadena.com.br
Dom Jan 21 10:52:55 -03 2007


Se você marcar no SQLDataSet (ou SQLQuery) e no ClientDataSet o campo
como Required = False, o Delphi vai permitir que você deixe em branco.

O problema é que o banco vai preencher esse valor no trigger, mas o
Delphi não vai recarregar o valor pra você no DataSet.

Nesse caso, eu recomendo usar o BeforeUpdateRecord do DataSetProvider
para atribuir a chave primária quando for uma inserção.

Erick

On 1/20/07, Mário Reis <secretariadogeral em acra.pt> wrote:
> Olá pessoal,
>
> Cá estou eu de novo. Desta vez por causa do comportamento do D7 + Firebird +
> DbExpress. Mas crei que o mm vale para qq outro modo de aceder à base de
> dados:
>
> É assim: tenho este campo NOT NULL Primary_KEY C/autoiincremento triger
> /GEN_ID(<qq_coisa,>,1 ). Porém quando estou a inserir dados sou obrigado a
> fornecer
> o valor deste campo do lado do Cliente D7 o mesmo se passando com os campos
> com valor por defeito. Isto é, o servidor não me fornece esses dados quando
> tinha toda a vantagem nisso.
> Obriga-me a chamar via SQLQuery a função Gen_ID(????) e a SQLStoredProcedure
> para assignar os valores do lado do cliente e envia-los ao servidor.
> Isto é mesmo assim ou estou errado? Como se pode ustrapassar isto.
> Então não era muito mais fácil enviar do lado do cliente apenas os
> dados/valores do meu input enquanto o servidor se encarregaria de fornecer o
> Autoincremento e os valores por defeito?
> Cheguei inclusivé a alterar a minha triger para caso o valor fosse zero ter
> o mm comportamento que o NULL mas nada feito, fica tudo na mesma.
> Alguem pode explicar-me a vantagem destes campos se tenho de estar a invocár
> a sua chamada do lado do cliente antes do triger disparar, particularmente
> porque se trata de um triger "Before Insert"?
> Depois se eu permitir que o cliente faça input do campo de autorincremento
> ele não incrementa e a consistencia dos dados poderá ficar em causa. Certo?
> Estarei enganado?
>
> Obrigado
> Mário
>
>
>
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para editar sua configuração na lista, use o endereço http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>




Mais detalhes sobre a lista de discussão lista