none
obtener descripcion de una tabla dentro de trigger RRS feed

  • Pregunta

  • Amigos buenas tardes , he creado un trigger que me inserta unos cuantos datos a otra tabla por medio de un select  este funcioana muy bien ,  tengo dos columnas que cargan el id del cliente y necesito que en estas aparezca la descripcion segun el codigo que haya en cada columna intente obtener esas descripciones por medio de otro  select y pasar el parametro ala tabla donde deseo insertar las descripciones del cliente , estas dos columnas compartes el codclie pero cada una llevara una descripcion diferente espero me haya hecho entender y me puedan ayudar , este el codigo de mi trigger 

    ALTER trigger [dbo].[VerificacionP]
    on [dbo].[TlbPedidos] after insert
    as
    begin
    SET NOCOUNT ON;
    insert into TlbVerificacionPedido(
            Pedido,
    Remision,
    CodClie, aca carga un codigo de cliente y necesito ver la descricion segun ese codigo
    Recibe, aca carga otro codigo de cliente diferente y necesito hacer el mismo paso anterior
    FechaCirugia,
    FechaCompromiso,
    MateriaSolicitado,
    Comentarios,
    IdPedidos,
    IDEstado,
    Verificacion,
    Observaciones,
    UsurIngreso
    )
    select 
    Pedido,
    Remision,
    CodClie,
    Recibe,
    FechaCirugia,
    FechaCompromiso,
    MateriaSolicitado,
    Comentarios,
    IdPedidos,
    IDEstado,
    0,
    '',
    UsurIngreso
    from 
    TlbPedidos

    end

    Daniel

    sábado, 8 de febrero de 2020 13:06

Todas las respuestas

  • Hola Dannycv 012:

    En el trigger no uses la select de y pedidos. Usa la pseudo tabla insertes y la cruzas con clientes (inner join si el pedido tiene cliente obligatorio y left join si no es obligatorio). Insertes tiene las columnas de y pedidos y su contenido es lo que acaban de insertar

    sábado, 8 de febrero de 2020 16:47
  • Hola Dannycv012:

    CREATE TABLE TLBPEDIDOS
    ([Pedido]            INT, 
     [Remision]          VARCHAR(100), 
     [CodClie]           INT, 
     [Recibe]            int, 
     [FechaCirugia]      DATE, 
     [FechaCompromiso]   DATE, 
     [MateriaSolicitado] VARCHAR(100), 
     [Comentarios]       VARCHAR(200), 
     [IdPedidos]         INT, 
     [IDEstado]          INT, 
     [UsurIngreso]       INT
    );
    
    CREATE TABLE TlbVerificacionPedido
    ([Pedido]            INT, 
     [Remision]          VARCHAR(100), 
     [codClie]           int, 
     [Recibe]            int, 
     [DesCliente]        varchar(100), 
     [DesRecibe]         varchar(100), 
     [FechaCirugia]      DATE, 
     [FechaCompromiso]   DATE, 
     [MateriaSolicitado] VARCHAR(100), 
     [Comentarios]       VARCHAR(200), 
     [IdPedidos]         INT, 
     [IDEstado]          INT, 
     [Verificacion]      int, 
     [Observaciones]     varchar(100), 
     [UsurIngreso]       INT
    );	
    
    CREATE TABLE CLIENTE
    ([ID]     INT, 
     [NOMBRE] VARCHAR(90)
    );
    go

    Esto es una recreación de tú escenario.

    Create OR ALTER trigger [dbo].[VerificacionP] on [dbo].[TlbPedidos] after insert as
    begin
        SET NOCOUNT ON;
        insert into TlbVerificacionPedido
         ([Pedido]
        , [Remision]
        , [CodClie]
        , [Recibe]
        , [DesCliente]
        , [DesRecibe]
        , [FechaCirugia]
        , [FechaCompromiso]
        , [MateriaSolicitado]
        , [Comentarios]
        , [IdPedidos]
        , [IDEstado]
        , [Verificacion]
        , [Observaciones]
        , [UsurIngreso]
         )
               select [Pedido]
                    , [Remision]
                    , [CodClie]
                    , [Recibe]
                    , [cliente].[nombre]
                    , [rec].[nombre]
                    , [FechaCirugia]
                    , [FechaCompromiso]
                    , [MateriaSolicitado]
                    , [Comentarios]
                    , [IdPedidos]
                    , [IDEstado]
                    , 0
                    , ''
                    , [UsurIngreso]
               from 
                    inserted
                    left join cliente on inserted.CodClie = cliente.id
                    left join cliente rec on inserted.Recibe = rec.id;
    END;
    GO

    En el trigger, mezclo inserted, que es la pseudoTabla que dispone de la información del trigger de inserccion de [TlbPedidos] y le hago un left join con cliente, para extraer datos de esa tabla.

    En la tabla de TlbVerificacionPedido, tengo dos columnas donde va esa información. DesCliente y DesRecibe.

    INSERT INTO cliente(id, nombre)
    VALUES
    (1,'DESCRIPCION');
    GO
    INSERT INTO TLBPEDIDOS ([Pedido] ,[Remision] ,[CodClie] ,[Recibe] ,[FechaCirugia] ,[FechaCompromiso]   
     ,[MateriaSolicitado] ,[Comentarios] ,[IdPedidos] ,[IDEstado] ,[UsurIngreso])
     VALUES
     (1,'COL REMISION ROW 1',1,1,'20200101','20200101','MATERIAL ROW 1','COMENTARIOS ROW1',1,1,1), 
     (2,'COL REMISION ROW 2',1,1,'20200102','20200102','MATERIAL ROW 2','COMENTARIOS ROW2',2,1,1);
    

    Inserto un cliente, para poder sacar algo de info, y luego inserto dos filas a TlbPedidos.

    Salida

    Auditoria de tabla

    https://javifer2.wordpress.com/2019/10/07/auditoria-de-tabla-con-triggers/

    domingo, 9 de febrero de 2020 5:51