Me parece que el tema no pasa por ahí...
 
Imagino que estás grabando el id con un campo identity, y de allí tu
problema.
 
Lo que tenés que hacer es "capturar" el valor del Id que se insertó en una
variable, escribiendo
 
SET @variable = @@Identity
 
inmediatamente después del INSERT, y después usarla en los otros insert.
 
También existe la función IDENT_CURRENT('table_name') que te devuelve el
último valor de identidad generado para esa tabla. Nunca la usé...
 
Otra opción es deshabilitar los campos identity de las tablas destino, y
usar los valores de id existentes en la tabla origen, así te quedan
exactamente iguales.
Esto se hace con SET IDENTITY_INSERT ON tutabla ON
 
Saludos,
 
Ana.

  _____  

De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Leandro
Halfon
Enviado el: Lunes 28 de Enero de 2008 15:57
Para: [email protected]
Asunto: [puntonet] [OT] SQL cursores anidados.


y como se hace eso ? jeje
gracias!!


2008/1/28, [EMAIL PROTECTED] <[EMAIL PROTECTED]>: 

deshabilitá los constraints 

----- Original Message ----- 
From: Leandro Halfon <mailto:[EMAIL PROTECTED]>  
To: [email protected] 
Sent: Monday, January 28, 2008 3:28 PM
Subject: [puntonet] [OT] SQL cursores anidados.

Lista.. a ver si algun grosso en sql me puede ayudar
tengo que duplicar totalmente los datos de un bd..
pero como algunas tablas estan relacionados..tengo que usar cursores...

hice un script para duplicar los datos de 2 tablas..

el scripts es el siguiente:

/*declaramos las variables para tabla menu*/
declare @idmenu as int
declare @tipomenu as int
declare @nombre as varchar(50)
declare @descripcion as varchar(300)
declare @orden as int
declare @idmenupadre as int
declare @publicado as bit
declare @imagen as varchar(80)
declare @alineacion as int
/*declaramos las variables para tabla menu_idiomas */
declare @texto as varchar(150)
declare @eslinkexterno as bit
declare @urlexterno as varchar(250)
declare @estargetself as bit
declare @estargetblank as bit
declare @espopup as bit
declare @width as int
declare @heigth as int

/*declaramos los cursores. El select debe contener sólo los campos a
utilizar.*/
declare MENU cursor for
select IdMenu,TipoMenu,
Nombre,Descripcion,OrdenMenu,IdMenuPadre,Publicado,Imagen,Alineacion 
from ocms_menues where idsitio=5 and tipomenu=3

open MENU
/*Avanzamos un registro y cargamos en las variables los valores encontrados
en el primer registro*/
fetch next from MENU into
@idmenu,@tipomenu,@nombre,@descripcion,@orden,@idmenupadre,@publicado,@image
n,@alineacion
    while @@fetch_status = 0
        begin
            /*Insertamos el nuevo menu*/
            insert into ocms_menues
values(@tipomenu,@nombre,@descripcion,@orden,@idmenupadre,@publicado,14,@ima
gen,@alineacion)
            necesito el id que inserte para el insert que hay mas abajo...
            /*Leemos el menu_idioma*/
            declare MENU_IDIOMAS cursor for            
            select
texto,eslinkexterno,publicado,urlexterno,estargetself,estargetblank,espopup,
popupwidth,popupheigth
            from ocms_menues_idiomas where [EMAIL PROTECTED]
            open MENU_IDIOMAS
            fetch next from MENU_IDIOMAS into
@texto,@eslinkexterno,@publicado,@urlexterno,@estargetself,@estargetblank,@e
spopup,@width,@heigth
            while @@fetch_status = 0
            begin
                /*Insertamos el nuevo menu_idioma*/
                insert into ocms_menues_idiomas
values(@texto,@eslinkexterno,@publicado,@urlexterno,@estargetself,@estargetb
lank,@espopup,@width,@heigth)
                /*Avanzamos otro registro de la tabla menu_idioma*/

                fetch next from MENU_IDIOMAS into
@tipomenu,@nombre,@descripcion,@orden,@idmenupadre,@publicado,@imagen,@aline
acion
            end
            close MENU_IDIOMAS
            deallocate MENU_IDIOMAS


            /*Avanzamos otro registro de la tabla menu */            
            fetch next from MENU into
@tipomenu,@nombre,@descripcion,@orden,@idmenupadre,@publicado,@imagen,@aline
acion
        end
    /*cerramos el cursor*/
close MENU
deallocate MENU

ahora bien.. en el cursor de MENU_IDIOMAS necesito insertar en valor que
hice en insert del nuevo menu.. tienen idea de como hago ?

gracias!!!

Leandro



Responder a