2016-06-09 8 views
0

Ich versuche einen Trigger zu schreiben, der eine QuoteNumber aus Tabelle 1 abruft und sie in Tabelle 2 einfügt, wo ShippingIdentity mit den Datensätzen in beiden Tabellen übereinstimmt. Das Problem ist, dass die QuoteNumber in eine eigene Zeile eingefügt wird (Datensatz) Kann mir bitte jemand sagen warum? Vielen Dank.Trigger fügt keinen Wert in den korrekten Datensatz ein

ALTER TRIGGER InsertQuoteNumber 
ON AccountInfo 
FOR INSERT 
AS 
BEGIN 

INSERT INTO ShippingInfo (QuoteNumber) 
SELECT a.QuoteNumber 
FROM AccountInfo a 
inner join inserted i on a.ShippingIdentity = i.ShippingIdentity 
END 
+0

Für welche RDBMS ist das? Bitte fügen Sie ein Tag hinzu, um anzugeben, ob Sie 'mysql',' postgresql', 'sql-server',' oracle' oder 'db2' verwenden - oder etwas ganz anderes. –

+0

Ich benutze sql-server –

+0

Vielen Dank für Ihre Antwort. Ich habe es die gleichen QuoteNumber für alle Datensätze zu stoppen setzen, aber es ist immer noch die QuoteNumber in seiner eigenen Zeile setzen statt, wo das ShippingIdentity Spiel ALTEN TRIGGER ShippingQuoteNumber \t ON Versandinfo \t nach UPDATE \t AS \t BEGIN \t UPDATE Versandinfo SET QuoteNumber a.QuoteNumber = \t FROM Account a \t INNER JOIN eingefügt t ON t.ShippingIdentity a.ShippingIdentity = END –

Antwort

0

Sie verwenden das Wort "einfügen" in Ihrer Beschreibung, aber ich denke, was du meinst ist "update". Das heißt, Sie möchten eine vorhandene Zeile in ShippingInfo ändern, um die neue Angebotsnummer widerzuspiegeln.

Das Problem in Ihrem Code ist so einfach wie Ihre Wortwahl. Sie verwenden einen INSERT Befehl, der eine neue Zeile einfügt. Wenn Sie eine vorhandene Zeile aktualisieren möchten, verwenden Sie UPDATE.

+0

Wenn ich die Aktualisierung verwendet es die gleiche Qu eingestellt oteNumber für alle Datensätze anstelle der verschiedenen ShippingIdentityin jede Zeile übereinstimmt, gefunden.. \t ALTER TRIGGER [DBO] [ShippingQuoteNumber] \t ON [DBO] [Versandinfo] \t für insert \t AS \t BEGIN \t UPDATE Versandinfo SET QuoteNumber = a.QuoteNumber \t Von AccountInfo ein \t INNER JOIN eingefügt t ON t.ShippingIdentity = a.ShippingIdentity END –

+0

Vielen Dank für Ihre Antwort. Ich habe es zu stoppen, die gleiche QuoteNumber für alle Datensätze setzen, aber es setzt immer noch die QuoteNumber in seiner eigenen Reihe anstatt wo die ShippingIdentity übereinstimmen ALTER TRIGGER ShippingQuoteNumber ON ShippingInfo nach UPDATE als BEGIN UPDATE ShippingInfo SET QuoteNumber = a.QuoteNumber FROM AccountInfo a INNER JOIN eingefügt t ON t.ShippingIdentity = a.ShippingIdentity END –

Verwandte Themen