Tidak seperti Andomar, saya akan senang menggunakan pemicu - tetapi saya tidak akan menghapus pemeriksaan kendala. Jika Anda menerapkannya sebagai instead of
pemicu, Anda dapat mengatur ulang baris lain ke nol sebelum melakukan penghapusan yang sebenarnya:
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)
Singkat, ringkas, tidak perlu jika SQL Server dapat menangani kaskade kunci asing ke tabel yang sama (di RDBMS lain, Anda mungkin dapat menentukan ON DELETE SET NULL
untuk batasan kunci asing, YMMV).