Se usi MS SQL puoi fare una StoredProcedure ricorsiva
Es:
codice:
CREATE PROCEDURE CASCADE_DELETE
@Key INT
AS
DELETE FROM Tabella WHERE Key = @Key
DECLARE @ChildKey INT
DECLARE Cascade CURSOR FOR
SELECT Key FROM Tabella WHERE ForeignKey = @Key
OPEN Cascade
FETCH NEXT FROM Cascade INTO @ChildKey
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC CASCADE(@ChildKey)
FETCH NEXT FROM Cascade INTO @ChildKey
END
CLOSE Cascade
DEALLOCATE Cascade
Non l'ho testata, ma sono fiducioso, anche se Zio Bill sconsiglia l'utilizzo dei cursori...