2017-06-15 2 views
1

Ich habe ein Problem mit meinem SQL-Trigger in Visual Studio 2010. Ich habe 2 Tabellen, und ich möchte eine Operation mit einer Tabelle auf einer anderen machen.Aktualisieren von Trigger in Visual Studio 2010

hier ist der Code:

ALTER TRIGGER update_costs 
ON employees 
AFTER UPDATE 
AS 
BEGIN 
    UPDATE employees 
    SET salary = 0 
    WHERE NewSalary.ID=employees.ID 
    PRINT 'Salary is now set on 0' 

END 

ich es so arbeiten möchten:

  • I Gehalt in NewSalary Tabelle auf 0
  • Gehalt in Tabelle employees bin Einstellung geändert wird auf 0

Der Fehler ich erhalte ist

„mehrteilige Bezeichner‚NewSalary.ID

‘konnte nicht gebunden werden“ Ich gehe davon aus es keine „innere Verknüpfung“ ist, aber ich weiß nicht, wie es zu benutzen

+0

Sie haben Recht, dass Sie eine Verknüpfung benötigen, aber Sie müssen auch die "versteckte" * eingefügte * Tabelle verwenden, die die Datensatz-ID des neuen Datensatzes enthält, der in die Tabelle employees geht. –

Antwort

0

Try Ändern der ON Employees zu ON NewSalary.

Es kann NewSalary.ID nicht finden, da die NewSalary-Tabelle nicht referenziert wird.

Wenn ich Probleme mit SQL, die rede ich sie in der Regel der Logik

Alt zum Vergleich heraus:
Nach jedem Update an Mitarbeitern, update Mitarbeiter und setzt Gehalt = 0 wobei NewSalary.ID = employees.ID .

Neu:
Aktualisieren Sie nach jeder Aktualisierung von NewSalary die Mitarbeiter und legen Sie Gehalt = 0 fest, wobei NewSalary.ID = employees.ID.

Den Unterschied sehen?

+0

Mitarbeiter ist die Tabelle, auf der der Trigger aktiviert ist, nicht die Tabelle, die verknüpft werden muss. Zumindest lese ich die Frage so. –

+0

Beachten Sie, wie der Fragesteller ** will ** den Auslöser zu arbeiten. Die erste Aktion betrifft die Tabelle NewSalary. Wie bei einem Ergebnis für dieses Update in der NewSalary-Tabelle - etwas anderes sollte mit der Employees-Tabelle passieren – mattbuell

+0

Sie haben Recht. Abgesehen davon ist das Design schlecht, um das Gehalt an beiden Orten zu erfassen. Etwas ist aus. –