Aynı tablodaki bir alanı silmek istiyorum, ancak kaydın nasıl silindiğinden emin değil. tablo oldukça basit ve üzerinde kendi kendine referansı vardır:SQL Server 2008 - DELETE tetikleyicisi ile bir alan nasıl güncellenir
İşteUserID FName EmailAddress EmailUserID
1 Frank [email protected] 2
2 Jane [email protected] NULL
3 John [email protected] 1
4 Brett [email protected] 2
benim tetik: Yani
CREATE TRIGGER [dbo].[CAT_DeleteUser]
ON Users
AFTER DELETE
AS
BEGIN
SET NOCOUNT ON;
UPDATE Users
SET EmailUserID = NULL
WHERE EmailUserID = ID_OF_DELETED_USER <-- don't know how to get this
END
Ben Jane (UserID = 2) silerseniz, ben güncellemek tetiği istiyorum EmailUserID 2 ile herhangi bir kayıt. Bunu nasıl yapabilirim?
CREATE TRIGGER [dbo].[CAT_DeleteUser]
ON Users
AFTER DELETE
AS
BEGIN
SET NOCOUNT ON;
UPDATE Users
SET EmailUserID = NULL
WHERE EmailUserID IN (SELECT UserID FROM DELETED)
END
Biliyorsunuz ki bu sadece kendi kendini referans alan bir yabancı anahtarınız yoksa * çalışacaksınız, değil mi? Yani, EmailUserID'de herhangi bir değeri girebileceğiniz anlamına gelir ve SQL Server, şikayet etmeyecektir. –