Insertar en dos tablas simultaneamente

28/04/2004 - 12:29 por Kano | Informe spam
Buenas.
Tengo q insertar en dos tablas de forma simultanea datos que extraigo de una
consulta sobre una tercera tabla ..
Digamos q la tabla fuente es F con campos a1 a2 b1 b2
y quiero insertar a1 y a2 en la tabla A y b1 y b2 en la tabla B ... el
problema viene pq tengo una restriccion de integridad entre a1 y b1que son
claves primarias y a demas quiero insertar bloques de registros de la
manera mas rapida posible .. es para actuilzar tablas de mi sistema desde
tablas de un 400
Bien .. se me ocurren dos formas ... con un while
while (quedan registros)
inserta en A
inserta en B
fin
la otra podria ser mediante algun insert select con join (q no he
encontrado como hacerlo) o insertando sobre una vista temporal (q no se
pueden crear) o alguna otra cosa q me sugirais
Me da la impresion de q un while podria ser bastante lento y el proceso no
deberia demorarse demasiado


Agradecere cualquier sugerencia

Gracias!!

Preguntas similare

Leer las respuestas

#1 Hermilson Tinoco
28/04/2004 - 15:26 | Informe spam
Hola.

Tienes razón, con un WHILE debe ser un proceso
interminable, lo mejor es una sentencia INSERT ... SELECT.
Si tienes alguna duda de la sintaxis, te envió un ejemplo:

* En el From puedes colocar un Inner o Left si lo
requieres.
* El Not Exists es para evitar los conflictos con la llave
primaria [PK].
* En el primer Where puedes utilizar cualquier condición
extra que se necesite.

Insert into t001
(
f001_a1, f001_a2
)
Select f002_a1, f002_a2
From t002 --INNER o LEFT
Where f002_a3 = @p3
and not exists (
Select 1
From t001
Where f001_a1 = f002_a1
and f001_a2 = f002_a2
)

Espero que te sirva.

Hermilson.
MCDBA, MCSD
Colombia

Buenas.
Tengo q insertar en dos tablas de forma simultanea datos


que extraigo de una
consulta sobre una tercera tabla ..
Digamos q la tabla fuente es F con campos a1 a2 b1 b2
y quiero insertar a1 y a2 en la tabla A y b1 y b2 en la


tabla B ... el
problema viene pq tengo una restriccion de integridad


entre a1 y b1que son
claves primarias y a demas quiero insertar bloques de


registros de la
manera mas rapida posible .. es para actuilzar tablas de


mi sistema desde
tablas de un 400
Bien .. se me ocurren dos formas ... con un while
while (quedan registros)
inserta en A
inserta en B
fin
la otra podria ser mediante algun insert select con join


(q no he
encontrado como hacerlo) o insertando sobre una vista


temporal (q no se
pueden crear) o alguna otra cosa q me sugirais
Me da la impresion de q un while podria ser bastante


lento y el proceso no
deberia demorarse demasiado


Agradecere cualquier sugerencia

Gracias!!
Respuesta Responder a este mensaje
#2 Kano
29/04/2004 - 08:15 | Informe spam
si me envias un par de ejemplos seria perfecto
Gracias!!


"Hermilson Tinoco" escribió en el mensaje
news:56b101c42d24$61239150$
Hola.

Tienes razón, con un WHILE debe ser un proceso
interminable, lo mejor es una sentencia INSERT ... SELECT.
Si tienes alguna duda de la sintaxis, te envió un ejemplo:

* En el From puedes colocar un Inner o Left si lo
requieres.
* El Not Exists es para evitar los conflictos con la llave
primaria [PK].
* En el primer Where puedes utilizar cualquier condición
extra que se necesite.

Insert into t001
(
f001_a1, f001_a2
)
Select f002_a1, f002_a2
From t002 --INNER o LEFT
Where f002_a3 = @p3
and not exists (
Select 1
From t001
Where f001_a1 = f002_a1
and f001_a2 = f002_a2
)

Espero que te sirva.

Hermilson.
MCDBA, MCSD
Colombia

Buenas.
Tengo q insertar en dos tablas de forma simultanea datos


que extraigo de una
consulta sobre una tercera tabla ..
Digamos q la tabla fuente es F con campos a1 a2 b1 b2
y quiero insertar a1 y a2 en la tabla A y b1 y b2 en la


tabla B ... el
problema viene pq tengo una restriccion de integridad


entre a1 y b1que son
claves primarias y a demas quiero insertar bloques de


registros de la
manera mas rapida posible .. es para actuilzar tablas de


mi sistema desde
tablas de un 400
Bien .. se me ocurren dos formas ... con un while
while (quedan registros)
inserta en A
inserta en B
fin
la otra podria ser mediante algun insert select con join


(q no he
encontrado como hacerlo) o insertando sobre una vista


temporal (q no se
pueden crear) o alguna otra cosa q me sugirais
Me da la impresion de q un while podria ser bastante


lento y el proceso no
deberia demorarse demasiado


Agradecere cualquier sugerencia

Gracias!!
Respuesta Responder a este mensaje
#3 Kano
29/04/2004 - 08:15 | Informe spam
si me envias un par de ejemplos seria perfecto
Gracias!!


"Hermilson Tinoco" escribió en el mensaje
news:56b101c42d24$61239150$
Hola.

Tienes razón, con un WHILE debe ser un proceso
interminable, lo mejor es una sentencia INSERT ... SELECT.
Si tienes alguna duda de la sintaxis, te envió un ejemplo:

* En el From puedes colocar un Inner o Left si lo
requieres.
* El Not Exists es para evitar los conflictos con la llave
primaria [PK].
* En el primer Where puedes utilizar cualquier condición
extra que se necesite.

Insert into t001
(
f001_a1, f001_a2
)
Select f002_a1, f002_a2
From t002 --INNER o LEFT
Where f002_a3 = @p3
and not exists (
Select 1
From t001
Where f001_a1 = f002_a1
and f001_a2 = f002_a2
)

Espero que te sirva.

Hermilson.
MCDBA, MCSD
Colombia

Buenas.
Tengo q insertar en dos tablas de forma simultanea datos


que extraigo de una
consulta sobre una tercera tabla ..
Digamos q la tabla fuente es F con campos a1 a2 b1 b2
y quiero insertar a1 y a2 en la tabla A y b1 y b2 en la


tabla B ... el
problema viene pq tengo una restriccion de integridad


entre a1 y b1que son
claves primarias y a demas quiero insertar bloques de


registros de la
manera mas rapida posible .. es para actuilzar tablas de


mi sistema desde
tablas de un 400
Bien .. se me ocurren dos formas ... con un while
while (quedan registros)
inserta en A
inserta en B
fin
la otra podria ser mediante algun insert select con join


(q no he
encontrado como hacerlo) o insertando sobre una vista


temporal (q no se
pueden crear) o alguna otra cosa q me sugirais
Me da la impresion de q un while podria ser bastante


lento y el proceso no
deberia demorarse demasiado


Agradecere cualquier sugerencia

Gracias!!
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida