I modsætning til Andomar ville jeg være glad for at bruge en trigger - men jeg ville ikke fjerne begrænsningskontrollen. Hvis du implementerer det som en instead of
trigger, kan du nulstille de andre rækker til null, før du udfører den faktiske sletning:
CREATE TRIGGER T_tabData_D
on tabData
instead of delete
as
set nocount on
update tabData set fiData = null where fiData in (select idData from deleted)
delete from tabData where idData in (select idData from deleted)
Det er kort, det er kortfattet, det ville ikke være nødvendigt, hvis SQL Server kunne håndtere fremmednøglekaskader til den samme tabel (i andre RDBMS'er kan du muligvis bare angive ON DELETE SET NULL
for den fremmede nøgle-begrænsning, YMMV).