Há o comando dtml-let que define uma variável.
Outra possibilidade seria chamar o insert direto sendo que sem definir
variável x
INSERT INTO telefone (id, idpessoa, numero) VALUES (0,chamaa função

type=int>,<dtml-sqlvar numero_telefone type=int>);

Outra seria colocar o valor dessa função num request ou contexto e pegar no
próximo componente a se exeutado via call.
Abraços
TOM

2007/1/18, Paul Eipper <[EMAIL PROTECTED]>:

  Olá,

Preciso pegar o último ID inserido ou atualizado em um ZSQL Method
para que eu possa usá-lo em outras tabelas relacionadas. Existe essa
possibilidade usando-se DTML ? Como fazê-lo?

O mySQL retorna o último ID inserido com a função LAST_INSERT_ID(),
que deve ser executada logo após o INSERT, logo preciso que ela seja
colocada na mesma transaction. Como passar isso em uma variável a ser
usada pelo método ZSQL?

Algo assim:

BEGIN;

INSERT INTO pessoa (id,nome) VALUES ( 0,<dtml-sqlvar nome_pessoa
type=string>);

<dtml-setvar x = LAST_INSERT_ID();> # Existe alguma coisa assim?!?

INSERT INTO telefone (id, idpessoa, numero) VALUES (0,<dtml-sqlvar x
type=int>,<dtml-sqlvar numero_telefone type=int>);

COMMIT;

Existe alguma possibilidade de se fazer isso? Ou melhor, como
normalmente é feito esse tipo de operação no Zope/Plone? (usar ID's
auto-incrementais em suas tabelas relacionadas).

[]'s
--
Paul Eipper



--
Cordialmente,
Wilton Souza Alencar
www.tom.pro.br

Responder a