Hola,
Todo eso se esta ejecutando dentro de un trigger de delete de otra tabla...
El problema ya lo solucione como dijo Esteban, porque pude usar un campo
para hacer la relacion, de cualquier forma lo explico mejor aca abajo:
El problema surge de algo bastante especifico en el que yo tengo algo asi
(ejemplo):
Caja * ------- 1 Componente
1- Cargo datos en la tabla Componente
2- Despues quiero crear nuevas Cajas usando la informacion de los
Componentes
3- Poner cada Componente en una Caja, pero cada Caja tiene que tener el
componente del cual se extrajo la informacion Componente
Copiando el ejemplo que puse antes, al principio tengo esto:
Tabla: Componente
Nombre Id_Caja
----- -----------
Monitor NULL
Micro NULL
CD NULL
Y quiero llegar a esto:
Tabla: Caja
id Nombre
-------- -----
1 La caja del Monitor
2 La caja del Micro
3 La caja del CD
Tabla: Componente
Nombre Id_Caja
----- -----------
Monitor 1
Micro 2
CD 3
Saludos!,
Diego
2008/11/6 Jose Mariano Alvarez <[EMAIL PROTECTED]>
> Diego, eso que propones es irracional, porque no se puede actualizar
> un dato sin previamente encontrarlo y para encontrarlo hay que
> compararlo.
>
> Me parece que lo que quieres deberia resolverse de otra manera
> analizando los requerimientos mas macro y eligiendo otra alternativa.
>
> Por ejemplo te sugiero analizar un trigger de delete como alternativa
> de proceso para "mover" los registros de tabla en tabla.
> Eso es algo que siempre explico en los cursos de tuning ya que te da
> eficiencia y transaccionalidad ademas de que pone un marco para hacer
> el proceso reenganchable
>
>
> --------------------------------
> Atte.
> Ing. Jose Mariano Alvarez
> SQL Total Consulting
>
>
>
> 2008/11/4 Diego Jancic <[EMAIL PROTECTED]>:
> > Hola Esteban,
> > El volumen de datos es minimo (~ 10) porque es un proceso que se hace por
> > partes, pero igual lo que no queria era comparar por C1, porque en
> realidad
> > puede que haya duplicados y no sea exactamente la respuesta que espero...
> >
> > Igual voy a hacer eso (a menos que algun mago tenga otra solucion :o)
> >
> > Gracias!,
> > Diego
> >
> > 2008/11/4 Esteban Grinberg <[EMAIL PROTECTED]>
> >>
> >> No se si existe mejor forma, pero esta funciona. Depende de tu volumen
> de
> >> datos evaluar si es optima o no.
> >>
> >> begin tran
> >>
> >> create table notmp (id int primary key identity(1,1),
> >> c1 nvarchar(5))
> >> create table #tmp (c1 nvarchar(5),
> >> fk int)
> >>
> >> insert into #tmp (c1) values ('A')
> >> insert into #tmp (c1) values ('B')
> >> insert into #tmp (c1) values ('C')
> >>
> >> INSERT INTO notmp (c1)
> >> select c1
> >> from #tmp
> >>
> >> UPDATE #tmp SET FK = ID FROM notmp WHERE notmp.C1 = #tmp.C1
> >>
> >> select * from notmp
> >> select * from #tmp
> >>
> >>
> >> drop table #tmp
> >> drop table notmp
> >>
> >> rollback tran
> >>
> >>
> >> 2008/11/4 Diego Jancic <[EMAIL PROTECTED]>
> >>>
> >>> Hola gente!,
> >>> Tengo un problema que no se me ocurre como resolver sin usar columnas
> >>> auxiliares (en las tablas no temporales)
> >>>
> >>> Mi idea es, si tengo una tabla con este contenido:
> >>>
> >>> Tabla: #tmp
> >>> c1 fk
> >>> ----- -----------
> >>> A NULL
> >>> B NULL
> >>> C NULL
> >>>
> >>> Insertar todo ese contenido en otra tabla no temporal, y actualizar la
> >>> tabla temporal con los ids insertados. De forma que quede:
> >>>
> >>> Tabla: notmp
> >>> id c1
> >>> -------- -----
> >>> 1 A
> >>> 2 B
> >>> 3 C
> >>>
> >>> Tabla: #tmp
> >>> c1 fk
> >>> ----- -----------
> >>> A 1
> >>> B 2
> >>> C 3
> >>>
> >>> Se entiende??
> >>>
> >>> Yo llegue a hacer algo como esto:
> >>>
> >>> --------------------------------------------------------
> >>> begin tran
> >>>
> >>> create table notmp (id int primary key identity(1,1),
> >>> c1 nvarchar(5))
> >>> create table #tmp (c1 nvarchar(5),
> >>> fk int)
> >>>
> >>> insert into #tmp (c1) values ('A')
> >>> insert into #tmp (c1) values ('B')
> >>> insert into #tmp (c1) values ('C')
> >>>
> >>> INSERT INTO notmp (c1)
> >>> OUTPUT INSERTED.ID INTO #tmp (fk)
> >>> select c1
> >>> from #tmp
> >>>
> >>> select * from notmp
> >>> select * from #tmp
> >>>
> >>>
> >>> drop table #tmp
> >>> drop table notmp
> >>>
> >>> rollback tran
> >>> --------------------------------------------------------
> >>>
> >>> Pero eso hace que que me #tmp me quede asi:
> >>>
> >>> c1 fk
> >>> ----- -----------
> >>> A NULL
> >>> B NULL
> >>> C NULL
> >>> NULL 1
> >>> NULL 2
> >>> NULL 3
> >>>
> >>> Alguna Idea?
> >>>
> >>> Gracias!,
> >>> Diego
> >>
> >
> >
>
>