Mahlzeit!
Meine Ausgangssituation sieht in etwa wie folgt aus:
CREATE TABLE x (
id serial,
wertx varchar(80)
);
CREATE TABLE y (
id serial,
werty1 int2 NOT NULL,
werty2 int2 NOT NULL,
CONSTRAINT fkey FOREIGN KEY (werty1) REFERENCES x (id),
CONSTRAINT unique UNIQUE (werty1, werty2)
);
INSERT INTO y (werty1, werty2) VALUES (1, 1);
INSERT INTO y (werty1, werty2) VALUES (1, 2);
Nun möchte ich in y die Werte von werty2 beider Einträge vertauschen. Meine Frage: Wie mache ich das? In der Doku habe ich schon einiges über verzögerbare Constraints gefunden (Stichwort: DEFERRABLE). Das funktioniert auch für Fremdschlüssel zweier Tabellen, die auf sich selbst zeigen, aber wie sieht das bei Eindeutigkeit aus? Sehe ich den Wald vor lauter Bäumen nicht?
Prinzipiell hätte ich wohl ein paar Lösungsansätze für das beschriebene Problem, aber die erscheinen mir mehr als unsauber, weswegen ich sie hier vorerst nicht zum besten gebe…
Gruß, eazy