Molti moderni sistemi di gestione di database relazionali supportano automaticamente l'integrità referenziale, ovvero quando si tenta di cancellare una tupla che ha un riferimento (sotto forma di chiave esterna, ad esempio), il DBMS non completa l'operazione e genera un errore .
Considera un database in cui ogni tabella ha un attributo, che indica se una tupla viene eliminata o meno. Quindi nessun dato viene effettivamente cancellato dal database, ma viene invece contrassegnato come cancellato. Se una tupla è contrassegnata come eliminata, tutti i suoi riferimenti devono essere contrassegnati come eliminati o si dovrebbe verificare un errore. Come può essere supportato?
Sta eseguendo ulteriori verifiche (programmaticamente o con trigger) prima di eliminare una tupla l'unico modo per avere un'integrità referenziale? Ci sono pratiche o algoritmi accettati?
Modifica: questo flag viene utilizzato principalmente per le statistiche e parzialmente per il recupero dei dati dopo un lungo periodo di tempo. È un filtro con un significato speciale, e proprio ora quando vengono eseguite le query, l'integrità referenziale viene verificata direttamente nella query, che è estremamente soggetta a errori e non è affatto affidabile.