Constraint Verhalten bei ersetzen von Tabellen

jk84

Grünschnabel
Hallo Zusammen,

bin noch neu im DB Geschäft. Mache aber grad ein Praxis-Projekt für mein Studium.
Wäre toll wenn ihr mir helfen könntet ein Teilproblem zu lösen.

Also folgendes:

Hab hier ne DB mit 80 Tabellen. Davon sollen einige ersetzt werden.
d.h. die Tabellen die ersetzt werden, werden umbenannt und neue (leere) mit dem gleichen Namen, ähnlicher Struktur und Constraints erstellt (mittels Mapping). Dann sollen von den umbenannt Tabellen die passenden Werte in die neuen Kopiert werden.
so weit so gut. aber....

Da es aber zwischen den Tabellen Foreign Key Verweise gibt zeigen diese ja dann nicht auf die neu erstellte Tabelle.

T1----FK---->T2-----FK----->T3
=> rename(T2) to T2_old und createTable(T2)
dann ergibt sich
T1-----FK----->T2_old-----FK----->T3 und
T2------FK----->T3
aber wie bekomme ich jetzt T1 auf T2 (neu) referenziert

Danke für eure Hilfe
 
Hi und willkommen im Forum

Was du suchst nennt sich ALTER TABLE.
Mit ADD CONSTRAINT kannst du ein neues Contraint anlegen, das auf deinen neue Tabelle zeigt.
MIT DROP CONSTRAINT kannst du das Alten, welche nicht mehr benötigt wird, löschen
 
Danke niggo,

so einfach geht das leider nicht. Da der ganze Vorgang automatisiert sein soll weiß die neue Tabelle ja nicht welche andere (alte) Tabelle einen Foreign Key auf sie haben.
Gibt es da eine Möglichkeit abzufragen welche Foreign Key auf mich (Tabelle) referenzieren?
 
Das hängt sicherlich von der verwendeten DAtenbank ab. Unter Oracle kann man sich die Daten aus den sys.user_ Views ziehen.

Code:
SELECT *
  FROM sys.USER_CONSTRAINTS c
  where ...

Ob und wie das bei anderen Datenbanken geht, kann ich so nicht sagen.

Gruß Torax
 
Zurück