FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
copiar informacion entre dos tablas
Buenas, le estoy rebuscando y no encuentro la solucion. Tengo dos Tablas, TERMINALES y COLECTOR. En la Tabla COLECTOR, tengo el primary key en la columna CODIGO. La Tabla TERMINALES no tiene primary key. Importo la informacion en TERMINALES desde txt, lo cual me crea valores duplicados, que son necesarios. Tengo tambien un trigger con lo siguiente:
CREATE TRIGGER COLECTOR_CHANGE FOR TERMINALES AFTER INSERT AS BEGIN INSERT INTO COLECTOR (CODIGO,CANTIDAD) VALUES ( TERMINALES.CODIGO,TERMINALES.EXISTENCIAS); END El problema esta en que los valores duplicados no se me importan a la Tabla COLECTOR, por el primary key. Hay alguna manera de que cuando se repita el codigo en la Tabla TERMINALES, me lo sume en la columna CANTIDAD de la Tabla COLECTOR? Lo puedo incorporar en el trigger? Uso Interbase 2007. |
#2
|
||||
|
||||
Saludos.
Prueba primero a realizar un Update y en caso de fallar haces el Insert. Idea:
__________________
Gracias, Rolphy Reyes |
#3
|
|||
|
|||
Muchas gracias Rolphy, el Update me funciono bien, pero solamente si hay valores en la Tabla de Colect, lo modifique de esta manera:
CREATE TRIGGER COLECTOR_CHANGE FOR TERMINALES BEFORE INSERT AS BEGIN UPDATE COLECTOR SET CANTIDAD = CANTIDAD +TERMINALES.EXISTENCIAS WHERE CODIGO = TERMINALES.CODIGO; END Habria alguna manera de modificar el Trigger para que primero me insertara los valores, y si se repite el codigo, hacer el update? Lo que sucede es que hago el emptytable en COLECTOR antes de Trigger para solamente tener la informacion inventariada. Otra vez, gracias. |
#4
|
|||
|
|||
Hola
En la version 2.1 de firebird existe "insert or update", interbase 2007 no tendra algo parecido ? |
#5
|
|||
|
|||
Gracias por tu aporte Hescopina, trate esto:
BEGIN insert into t1 (id, c1, c2) values (:id, :c1, :c2) WHEN SQLCODE -803 DO update t1 set c1 = :c1, c2 = :c2 WHERE id = :id; END pero se atora en WHEN, no lo acepta. Ya encontre la manera dandole varias vueltas, pero si funciona. Importe la columna codigo, en la columna de cantidad el null lo converti en 0, e hice el trigger con el update siguiente: UPDATE COLECTOR SET CANTIDAD = CANTIDAD +TERMINALES.EXISTENCIAS WHERE CODIGO = TERMINALES.CODIGO; Gracias hescopina y RolphyReyes. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Como Pasar Informacion Entre Dos Bases De Datos Con Tablas Identicas? | MaSSaKKre | SQL | 8 | 06-02-2008 16:20:29 |
Copiar Informacion De Un EDIT A Un DBGrid | Ericklsca | Conexión con bases de datos | 1 | 11-07-2006 07:35:46 |
Como intercambio información entre formularios | pyanqn | Varios | 8 | 03-11-2005 17:04:13 |
Como Copiar contenidos entre DBs | ELINK | Firebird e Interbase | 2 | 29-04-2005 18:41:45 |
|