Sie können unter Logik verwenden
CREATE TRIGGER [dbo].AU_MyTrigger ON [dbo].MyTable
FOR UPDATE
AS
BEGIN
declare @bu_addr varchar(100)
declare @bu_zip varchar(100)
declare @au_addr varchar(100)
declare @au_zip varchar(100)
select @bu_addr = addr, @bu_zip = zip from DELETED
select @au_addr = addr, @ay_zip = zip from INSERTED
if (@bu_addr <> @au_addr) and (@bu_zip = @au_zip)
BEGIN
-- update table with old values
-- raise error
END
END
Beachten Sie, dass, wenn dieses Update in Batch passieren können, müssen Sie durch jeden Datensatz Schleife und aktualisieren ihren Wert zu alt und erst am Ende des Abzugs Rück Fehler (außerhalb der Schleife). In diesem Fall müssen Sie CURSOR
verwenden, um auf aktualisierten Zeilen zu iterieren. Sie könnten nicht so einfach wie ich erklärte, aber das ist der Ansatz, der funktioniert.
Klingt nach etwas, das auf Anwendungsebene und nicht auf Datenbankebene behandelt werden sollte. –