You will need to handle this situation with INSTEAD OF DELETE.
Sort of:
CREATE TRIGGER tr_IOD_YourTable ON YourTable
INSTEAD OF DELETE
AS
BEGIN
SET NOCOUNT ON
UPDATE yt
SET ChildForeignKey = NULL
FROM deleted d
INNER JOIN YourTable yt
ON d.PrimaryKeyColumn = yt.ChildForeignKey
DELETE FROM yt
FROM deleted d
INNER JOIN YourTable yt
ON d.PrimaryKeyColumn = yt.PrimaryKeyColumn
END
source
share