Porque no funciona?..

21/07/2005 - 18:20 por Gabriel South | Informe spam
Hola, tengo el siguiente insert into que lee desde otra tabla, la cosa es
que si se fijan bien, la penultima liña tiene un (select
isnull(max(r_e_c_n_o_),0)+1 from esp010) para que en un campo vaya
incrementando el valor por cada registro insertado
La cosa es que parece no funcionar cuando en la tabla origen hay mas de 1
registro, porque pone siempre el mismo numero (es mas me da error de
constraint porque la columna R_E_C_N_O_ no puede estar duplicada)

Hay algun metodo para generar ese numero correctamente??... Debo utilizar
un cursor?.. si fuera el cursor la solucion, me dan una mano con la creacion
del mismo ??

Muchisimas gracias por la ayuda,

Gabriel.

-

insert into esp010
(ESP_FILIAL,
ESP_ID,
ESP_STATUS,
ESP_MENSAG,
ESP_ANO,
D_E_L_E_T_,
R_E_C_N_O_)
select ' ',
@IDPROCESS,
isnull(status,''),
isnull(mensagem,''),
isnull(ano,''),
' ',
(select isnull(max(r_e_c_n_o_),0)+1 from esp010) --<Como hago
funcionar esto ???
from #r
 

Leer las respuestas

#1 Alejandro Mesa
21/07/2005 - 18:47 | Informe spam
Gabriel,

No funciona porque la sentencia "insert" corre en una transaccion y la
sentencia "select" no ve las filas que se estan insertando. Por que no usas
una columna identity?


AMB



"Gabriel South" wrote:

Hola, tengo el siguiente insert into que lee desde otra tabla, la cosa es
que si se fijan bien, la penultima liña tiene un (select
isnull(max(r_e_c_n_o_),0)+1 from esp010) para que en un campo vaya
incrementando el valor por cada registro insertado
La cosa es que parece no funcionar cuando en la tabla origen hay mas de 1
registro, porque pone siempre el mismo numero (es mas me da error de
constraint porque la columna R_E_C_N_O_ no puede estar duplicada)

Hay algun metodo para generar ese numero correctamente??... Debo utilizar
un cursor?.. si fuera el cursor la solucion, me dan una mano con la creacion
del mismo ??

Muchisimas gracias por la ayuda,

Gabriel.

-

insert into esp010
(ESP_FILIAL,
ESP_ID,
ESP_STATUS,
ESP_MENSAG,
ESP_ANO,
D_E_L_E_T_,
R_E_C_N_O_)
select ' ',
@IDPROCESS,
isnull(status,''),
isnull(mensagem,''),
isnull(ano,''),
' ',
(select isnull(max(r_e_c_n_o_),0)+1 from esp010) --<Como hago
funcionar esto ???
from #r



Preguntas similares