Ich möchte Foreign Keys im Postgres Schema definieren um die Relationen zwischen den Tabellen explizit zu machen auf der Datenbank-Ebene. Zum Beispiel, ich habe eine Tabelle Artikel mit Feld SN (Sachnummer), was eigentlich eindeutig sein sollte, und möchte dies von verschiedenen anderen Tabellen (mit einem Foreign Key) referenzieren. Das setzt einen eindeutigen Schlüssel voraus, also ein UNIQUE Constraint auf der Artikel-Tabelle.
Soweit so gut, aber gelöschte Datensätze machen einen Strich durch die Rechnung. Es ist ja möglich, einen Artikel zu löschen und neu anzulegen. Gut, dachte ich, dann beziehe ich auch __deleted ein, so wie
Code: Alles auswählen
ALTER TABLE artikel ADD CONSTRAINT unique_artikel_sn
UNIQUE (__deleted, sn);
Bei jedem Löschen ein PACK zu machen wäre theoretisch denkbar, aber in der Praxis???
Hat jemand eine bessere Idee?
Gibt es vielleicht irgendwo eine Einstellung damit DELETE den Datensatz sofort und endgültig entfernt, anstatt ihn nur als gelöscht zu markieren?
RECALL brauche ich nicht.