Frage : kaskadiereneinsätze; neues folgendes # zu den Kindtabellen führen

für die folgenden Tabellen
tableA (tableA_pk, tableB_fk, col1)
tableB (tableB_pk, col1, col2, col3, col4, col5)
tableC (tableA_fk, col1, col2, col3)
tableD (tableD_pk, col1, col2, col3, col4, col5, col6, col7)

what kann Logik Sie sich vorstellen, um das folgende zu tun?

we kann Reihenfolge 2 für tableB und tableA verursachen; aber wie leiten Sie die neue Folgenummer an die Kindaufzeichnungen weiter?

--neue Rekorde im tableB verursachen, das auf verlegtem match
INSERT in tableB b
select createnewpk, d.col3, d.col4, d.col5, d.col6, d.col7
from tableB b, verlegtes d wo d.col1 = b.col1 und d.col2 und b.col2

basiert--neuen Rekord für Kindaufzeichnungen tableA (keine Bedingungen betroffen) im
INSERT in tableA verursachen ein
select createnewpk, b.generated_newpk, col1

--neuen Rekord für Kindaufzeichnungen im tableC verursachen aber die Daten aktualisieren, die auf verlegtem match.
INSERT in tableC c
select a.generated_newpk, .d.col5, d.col6, d.col7 from
tableC c, verlegtes d wo c.col1 = d.col5 und c.col2 = d.col6 und c.col3= d.col7
basieren

Antwort : kaskadiereneinsätze; neues folgendes # zu den Kindtabellen führen

Wenn Sie eine Reihenfolge verwenden, benutzen Sie das folgende Konstruieren, um ein neues zu erhalten bewerten von ihm:

seqname.nextval

Sie kann auf den gegenwärtigen Wert der Reihenfolge (ohne neue Werte zu erzeugen) indem Sie das folgende dann dich beziehen verwenden:

seqname.currval

So indem Sie das currval in Ihnen mit einschließen, Aussagen einsetzen, die Sie die Kindreihen mit ihren Eltern verbinden.
Weitere Lösungen  
 
programming4us programming4us