Ich habe 3 Tabellen:PostgreSQL: FOREIGN KEY/ON DELETE CASCADE/TRIGGER
Details
Detail_Archive
Transaction_Results
Transaction_Results ist eine neue Tabelle, die ich nicht gebaut und hat eine Einschränkung, die ich wahrscheinlich vollständig entfernen könnte, aber ich würde glauben, dass es einige Funktionen brechen könnte, von denen ich annehme, dass es dafür gebaut wurde.
ALTER TABLE Transaction_Results
ADD Constraint Transaction_Results_Detail_DetailID_fkey FOREIGN KEY (DetailID)
REFERENCES Details (DetailID) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
Jetzt in der Vergangenheit habe ich einfach kopiert und gelöschte Datensätze aus Detail- und in Detail_Archive
Was wären die häufigste Art und Weise (n) die Einschränkung zu halten? Meine Idee wäre: vielleicht mache ich null-fähig und setze die Werte, die ich entferne, auf null, verschiebe sie vielleicht in eine zusätzliche Spalte, die auf die Archivversion der Tabelle verweist, und mache diese ebenfalls null-fähig. In meinem Code, wo ich das brauchte, werde ich mich mit diesem Problem beschäftigen müssen, aber das ist nicht so schlecht für mich.
Es ist ein FOREIGN KEY, es stellt sicher, dass für jeden Wert der DetailID in dieser Tabelle ein Datensatz in der Detailtabelle mit dem gleichen Wert von DetailID vorhanden ist. [wiki FK] (https://en.wikipedia.org/wiki/Foreign_key) – McNets
Ja ... Das ist mein Problem .... –
Nun, die offensichtliche (und wahrscheinlich falsche) Antwort wäre, Zeilen zu löschen von " Detail "oder" Details ". Das scheint "Transaction_Results" zu sein. Die einfachste Lösung wäre, entweder die Abhängigkeit zu löschen oder sie auf "Delete cascade" zu setzen. Sie müssen wissen, wie Zeilen in "Transaction_Results" enden oder wie Sie den Designer finden, um zu wissen, welches Programm geeignet ist. –