2016-12-02 2 views
0

Ich nenne nur einen Wert in einer anderen Tabelle in SQL Server, aber ich habe ein Problem:Wie Wertes in einer anderen Tabelle mit Trigger Auswahl

CREATE TRIGGER [dbo].[IdHeadOtomatis] 
ON [dbo].[RollsNumberSimulation] 
FOR INSERT, UPDATE 
AS 
BEGIN 
    UPDATE [RollsNumberSimulation] 
    SET IdHead = (SELECT IdHead 
        FROM NewCutPlan 
        WHERE [IdNewCutPlan] = IdNewCutPlan) 
    WHERE [IdRollNumber] IN (SELECT [IdRollNumber] FROM Inserted) 
END 

Diese Abfrage kann eingefügt aber wenn der Einsatz „IdNewCutPlan“ Fehler in diesem Bildschirmfoto.

screenshot

Bitte helfen,

Danke, Bang

+0

Verwenden Sie MySQL oder SQL Server? In ersterem Fall ist es nicht möglich, die gleiche Tabelle zu modifizieren, die den Auslöser ausgelöst hat. Solche rekursiven Trigger können auch in SQL Server deaktiviert werden und sind möglicherweise auch dort nicht ratsam. –

+0

Irgendwelche Ideen? Wie bekomme ich einen Wert per ID im Trigger oder sonst? – Bang

+0

Der einfachste Weg könnte sein, über eine logische Möglichkeit nachzudenken, nicht auf der aufrufenden Tabelle auslösen zu müssen. Vielleicht könnten Sie es in Ihrer Geschäftslogik behandeln, bevor es die Datenbank erreicht. –

Antwort

0

Nach der Fehlermeldung das Problem ist, dass Sie einen einzelnen Wert, um mehrere Werte zu vergleichen versuchen, speziell auf Ihre Unterabfrage zurückkehrt mehr als ein Wert:

select IdHead from NewCutPlan where [IdNewCutPlan]=IdNewCutPlan 

Wahrscheinlich ist das Problem Ihre Predica te WHERE [IdNewCutPlan]=IdNewCutPlan die immer als wahr ausgewertet wird, hättest du einfach WHERE 1=1 schreiben können. Vielleicht haben Sie gemeint, dass eine von ihnen eine wörtliche Zeichenfolge ist 'IdNewCutPlan' aber ohne weitere Informationen, was Sie wirklich mit Ihrem Auslöser tun wollen, ist es schwer zu erraten.

+0

Irgendwelche Ideen? Wie bekomme ich einen Wert per ID im Trigger oder sonst? – Bang

+0

@Bang Ich kann nichts empfehlen, weil Sie in der Frage nicht viel Kontext bereitgestellt haben. Welche Tabellen gibt es, wann werden Daten eingefügt, die den Auslöser auslösen, und was versuchen Sie mit dem Auslöser zu erreichen? Aktualisiere die Frage mit diesen und wir können genauere Ratschläge geben. – mendosi

Verwandte Themen