Ich habe die folgende TriggerMS SQL Server-Trigger Vor Löschen
ALTER TRIGGER SystemClearConfiguration
ON Systems
FOR DELETE
AS
BEGIN
UPDATE Configurations SET ReceiverId = NULL WHERE ReceiverId = (SELECT deleted.Id from deleted);
UPDATE Configurations SET SenderId = NULL WHERE SenderId = (SELECT deleted.Id from deleted);
END
GO
Wenn ich in die Datenbank gehen direkt auf Systemen klicken und klicken Sie auf „Bearbeiten Top 200“ und versuchen, eine Zeile zu löschen, die ich ich weiß, bekomme immer den Fehler über den FK auf Tabellenkonfigurationen.
Der einzige Grund, den ich sehe, ist der Trigger nicht vor dem Löschen ausgeführt. Auf Oracle weiß ich, dass man VOR oder NACHFOLG sagen kann, aber auf SQL kann ich solche Option nicht finden.
EDIT 1 - 2016-12-07
HINWEIS: Datatypes möglicherweise nicht korrekt
Fehler
Könnten Sie bitte die vollständige Fehlermeldung bereitstellen? Und vielleicht könnten Sie uns auch Ihre Tabellenstrukturen einschließlich der Schlüsselspalten zeigen? – Tyron78
Hallo @ Tyron78, ich habe gerade die von Ihnen angeforderte Information hinzugefügt. – FEST
Nach dem Fehler deines Auslösers zu urteilen, würde ich sagen, dass der Grund ziemlich einfach ist: NULL ist keine gültige ReceiverId ... deshalb stürzt der FK ab. Vielleicht möchten Sie einen Dummy-Systemeintrag mit ID -1 und Name "Nicht zugewiesen" definieren und diesen anstelle der NULL-Aktualisierung verwenden. – Tyron78