none
Triggers y The multi-part identifier "UPDATEd.testid" could not be bound. RRS feed

  • Pregunta

  • Buen día compañeros soy nueva en el uso de triggers, tengo este que es para actualizar la fecha cada vez que se actualice l registro pero me sale el siguiente error: The multi-part identifier "UPDATED.TestID" could not be bound.

    create trigger tgfecha
    on test
    for update 
    as begin
    set NOCOUNT on;
    UPDATE test
    set LastDate=GETDATE()
    where TestID= UPDATED.TestID
    end

     
    jueves, 15 de junio de 2017 1:13

Respuestas

  • El identificador de múltiples partes 'UPDATED.TestID' no existe, sospecho que el objeto UPDATED lo escribiste tentando una posible solución, no es correcto. 

    CREATE TRIGGER dbo.tgfecha
        ON dbo.test
        FOR UPDATE 
    AS 
    BEGIN
        SET NOCOUNT ON;
    
        UPDATE t
        SET t.LastDate = GETDATE()
        FROM inserted i INNER JOIN test t ON i.TestID = t.TestID
    END
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Emma Grz jueves, 15 de junio de 2017 3:14
    jueves, 15 de junio de 2017 1:56
  • JOIN une la tabla lógica inserted con tu tabla test mediante el test id, por ello es que ya puedes actualizar la fecha que requieres. Esa es la función del JOIN

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    • Marcado como respuesta Emma Grz jueves, 15 de junio de 2017 4:04
    jueves, 15 de junio de 2017 3:46

Todas las respuestas

  • Hola Emma Swan

    Me parece que estás confundiéndote en esta línea:

    create trigger tgfecha
    on test
    for update 
    as begin
    set NOCOUNT on;
    UPDATE test
    set LastDate=GETDATE()
    where TestID= UPDATED.TestID
    end

    estás indicando que tu tabla es UPDATED y tu campo es TestID?

    No sería tu tabla test y tu campo TestID? así:

    create trigger tgfecha
    on test
    for update 
    as begin
    set NOCOUNT on;
    UPDATE test
    set LastDate=GETDATE()
    where TestID= test.TestID
    end

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    jueves, 15 de junio de 2017 1:16
  • El identificador de múltiples partes 'UPDATED.TestID' no existe, sospecho que el objeto UPDATED lo escribiste tentando una posible solución, no es correcto. 

    CREATE TRIGGER dbo.tgfecha
        ON dbo.test
        FOR UPDATE 
    AS 
    BEGIN
        SET NOCOUNT ON;
    
        UPDATE t
        SET t.LastDate = GETDATE()
        FROM inserted i INNER JOIN test t ON i.TestID = t.TestID
    END
    GO


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Emma Grz jueves, 15 de junio de 2017 3:14
    jueves, 15 de junio de 2017 1:56
  • Gracias compañero si era ese el problema pero me actualiza la fecha de todos los registros de la tabla no solo del registro de cierto ID
    jueves, 15 de junio de 2017 1:59
  • Emma Swan

    Probaste la solución de Willams? me parece que eso te actualizaría correctamente la fecha del testId que requieres


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    jueves, 15 de junio de 2017 2:18
  • Gracias compañero funciono disculpa me podrias explicar un poco lo que sucede el uso del join y demas
    jueves, 15 de junio de 2017 3:15
  • Si ya la probe y funciono compañero gracias no habia usado el INNER JOIN antes

    jueves, 15 de junio de 2017 3:36
  • JOIN une la tabla lógica inserted con tu tabla test mediante el test id, por ello es que ya puedes actualizar la fecha que requieres. Esa es la función del JOIN

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    • Marcado como respuesta Emma Grz jueves, 15 de junio de 2017 4:04
    jueves, 15 de junio de 2017 3:46