I\'m trying to delete user\'s data and all it\'s related data that is located in different tables. All the tables have Foreign Keys but without cascade delete.
I in
Those are the best and most efficient ones. For production queries I would use 2
.
The only other ways I can think of would (IMO) only be suitable for quick and dirty removal of data in a test environment (avoiding the need to analyse the correct order)
WITH CHECK
to avoid leaving the FKs in an untrusted state which means that all preserved data needs to be re-validated.DELETE
statements on affected tables in arbitrary order and run the batch as many times as necessary until it succeeds with no FK errors.