Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 27-09-2014
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
trigger de insert recorrer un tabla completa

Hola saludos:
Tengo una tabla en interbase que necesito insertar en un trigger de insert todas las filas de otra tabla en una tercera ,
O sea esta es la estructura tengo una tabla llamada PCS :

Una que tiene la computadoras llamadas pcs
Código SQL [-]
  create table PCS(
  idpc integer not null primary key,
  nombre  varchar(40),
  idarea integer not null,
  ip  varchar(20),
  foreign key (idarea) references Areas(idarea)
  on delete cascade
  on update no action
  );

Otra llamada Piezas: que tiene la pizas que hay en la pc
Código SQL [-]
CREATE TABLE  Piezas(
  idpieza  INTEGER PRIMARY KEY,
  idTipoPieza  integer,
  Marca  varchar(50),
  Modelo  varchar(50),
  Serie  varchar(50),
  Opservaciones  varchar(100),
  idpc  INTEGER,
  foreign key (idpc  ) references PCS(idpc  )
  );

Y otra que tiene los tipo de piezas disco duros, motherboard ram, etc.
Código SQL [-]
  CREATE TABLE TipoPieza (
  Id_TipoPieza  INTEGER PRIMARY KEY,
  Nombre  varchar(50)
  );

Como todas las computadoras tienen dentro disco duro ram y otras, quiero en el momento de insertar una pc en pcs en el trigger de insert que se inserten todos los registros de la tabla TipoPieza en la tabla Piezas, o sea el Id_TipoPieza .
Responder Con Cita
  #2  
Antiguo 27-09-2014
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Hola

¿Y que tienes avanzado hasta ahora? ¿Cual es la duda?

Saludos
Responder Con Cita
  #3  
Antiguo 27-09-2014
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
Disculpa . no logro explicarme bien ,la duda es esa no se como hacer el trigger de insert de la tabla pcs
Como todas las computadoras tienen dentro disco duro ram y otras partes y piezas, quiero en el momento de insertar una pc en pcs en el trigger de insert que se inserten todos los registros de la tabla TipoPieza en la tabla Piezas, o sea el Id_TipoPieza con ese idpc que tengo en el momento de insert en pcs .

no se como recorer todas las filas de la tabla TipoPieza opteniendo todos esos Id_TipoPieza
para insertar en la tabla piezas una línea por cada uno.

O sea quiero en el trigger de insert de la tabla pcs, que cuando se inserte una pc, con ese idpc
Insertar 4 o 5 o la cantidad de tipos de piesas que existan en la tabla tipopiezas insertarlos en la tabla piezas con ese idpc que inserte nuevo.
Este es la idea

Código:
  Tabla pcs
  Idpc     nombre    idarea         ip
  1        secretaria       2     192.3168.25.3
   
  Tabla Piezas
  Id_pieza       id_tipopieza      marca         modelo ………………
  1                      2                        seagate     
   
  Tabla tipopieza
  Id_tipopieza     nombre
  1                                          mb
  2                                          Disco duro
Quiero insertar todos los Id_tipopieza de la tabla tipopieza en la tabla piezas con cada insert que haga en la tabla pcs . me explique o lo que hice fue enrredar mas la pregunta.


gracias por responderme

Última edición por Casimiro Notevi fecha: 27-09-2014 a las 19:48:41.
Responder Con Cita
  #4  
Antiguo 29-09-2014
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Así es como debes hacerlo.
En un trigger AFTER INSERT.

Código SQL [-]
CREATE OR ALTER TRIGGER PCS_AI0 FOR PCS
ACTIVE AFTER INSERT POSITION 0
as
begin
  /* Inserto una lista de piezas */
  /* El campo IDPC lo relleno con el de esta tabla (new.idpc) */
  /* El campo IDTIPOPIEZA lo relleno con el select */
  insert into piezas (idpc, idTipoPieza)
  select new.idpc, Id_TipoPieza from TipoPieza;
end

Es como hacer
Código SQL [-]
INSERT INTO TABLA (CAMPO_1, CAMPO_2, ...)
SELECT CONSTANTE, CAMPO_A, CAMPO_B, ... FROM TABLA_B

También lo puedes hacer así:
Código SQL [-]
CREATE OR ALTER TRIGGER PCS_AI0 FOR PCS
ACTIVE AFTER INSERT POSITION 0
as
declare variable idTipoPieza integer;
begin
  /* Recorro la tabla de TipoPiezas */
  for select Id_TipoPieza from TipoPieza
      into :idTipoPieza
  do
      /* Inserto la pieza en la tabla de piezas de este PC */
      insert into piezas (idpc, idTipoPieza)
      values (new.idpc, :idTipoPieza);
end;

Última edición por duilioisola fecha: 29-09-2014 a las 17:04:28.
Responder Con Cita
  #5  
Antiguo 29-09-2014
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Poder: 17
juank1971 Va por buen camino
gracias

ok gracias amigo era eso lo que necesitaba, es que vendo de sqlserver y parece lo mismo pero no lo es, cualquier pequeño detalle te traba la cosa ,

gracias mucha salud y pesetas juank
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Trigger Update or insert amerika111 MS SQL Server 0 03-08-2011 21:18:52
problema con trigger after insert auribe Conexión con bases de datos 2 18-05-2011 16:51:16
Recorrer Tabla, contar registro repetidos y escribir totales en otra Tabla Lucas_diaz1810 Conexión con bases de datos 1 25-12-2006 13:04:34
Trigger Before (Insert,update,delete)? estebanx MS SQL Server 2 25-05-2006 15:58:19
actualizar tabla completa phoenix Tablas planas 1 07-11-2003 14:34:04


La franja horaria es GMT +2. Ahora son las 09:08:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi