2017-03-12 1 views
0

J'ai une mise à jour à traiter sur un déclencheur lorsqu'un code spécifique est entré dans la colonne. Quand je référence à la table insérée, qui montre dans la liste déroulante intellisence quand je tape inséré je reçois l'erreur:Comment référencer la colonne sur la table insérée dans le déclencheur après

The multipart identifier "inserted.contact" could not be bound.

Toute idée comment référencer une colonne dans la table insérée pour un déclencheur? Aussi, pourquoi est-il préférable d'utiliser la table insérée que la table existante?

UTILISATION PCUnitTest GO

UPDATE P 
SET 
    P.First_Name = T.ForeName 
    ,P.Middle_Name = T.Middle_Name 
    ,P.Last_name = T.Surname 
FROM GMUnitTest.dbo.Contact1 C 
INNER JOIN PCUnitTest.dbo.People P 
    ON P.People_ID = C.Key4 
CROSS APPLY dbo.NameParser(inserted.Contact) T --"the multipart identifier "inserted.contact" could not be bound" 
WHERE C.Key1 = '76' 
; 
+0

Veuillez fournir plus d'informations sur vos dispositions de données. –

Répondre

0

Vous apporter inserted comme une table:

UPDATE P 
    SET P.First_Name = T.ForeName, 
     P.Middle_Name = T.Middle_Name, 
     P.Last_name = T.Surname 
FROM PCUnitTest.dbo.People P JOIN 
    GMUnitTest.dbo.Contact1 C 
    ON P.People_ID = C.Key4 JOIN 
    inserted i 
    ON i.?? = c.?? CROSS APPLY 
    dbo.NameParser(i.Contact) T 
WHERE C.Key1 = '76'; 

La seule question est ce que les colonnes que vous utilisez pour la JOIN. Les ?? sont pour vos noms de colonnes.

+0

merci comment puis-je savoir que c'est la table insérée de la table contact1 que l'utilisateur vient de mettre à jour? contact1 est la table que l'utilisateur vient de mettre à jour, il est donc possible qu'il n'ait pas besoin d'être dans la requête puisque la nouvelle valeur sera dans la table insérée. Il semble que je l'utiliserais. UPDATE P SET P.First_Name = T.ForeName, P.Middle_Name = T.Middle_Name , P.Last_name = T.Surname DE PCUnitTest.dbo.People P jointure inséré i = ON i.KEY4 P.People_ID CROSS APPLY dbo.NameParser (i.Contact) T O i i.Key1 = '76 -ENR ' ET P.PEOPLE_ID = i.KEY4 – ERPISE

+0

@ERPise Bonjour à nouveau! La table 'Inserted' est remplie uniquement avec des données après une instruction' INSERT' ou 'UPDATE'. S'il s'agit d'un déclencheur sur 'Contact1', à chaque fois qu'une telle instruction est exécutée sur cette table,' Inserted' sera rempli avec les lignes de 'INSERT' ou' UPDATE'. Le déclencheur n'attrape pas ** ** les valeurs de la table 'Inserted' après l'exécution d'une telle instruction sur toute autre table. – 3BK