Sequence des 1. tables auf 4 weitere replizieren

Ich habe einen table x
dann 4 weitere x_1, x_2, x_3, x_4

Erzeuge die sequenz mit CREATE SEQUENCE x_id_seq;

jetzt versuche ich mich an nem „trigger“. der soll diese id, die auch in den untergeordneten tabellen vorhanden ist replizieren. ist nur eine eine einfache aufsteigende numerierung. hatte auch schon den artikel mit der „autowert“-funktion gelesen, aber nicht wirklich klar gesehen danach. daher frag ich nochmal konkreter.

Gruß,
Jens

Hallo,

Ich habe einen table x
dann 4 weitere x_1, x_2, x_3, x_4

Erzeuge die sequenz mit CREATE SEQUENCE x_id_seq;

jetzt versuche ich mich an nem „trigger“. der soll diese id,
die auch in den untergeordneten tabellen vorhanden ist
replizieren.

Ich verstehe nicht ganz. Zunächst einmal hast du nur eine Sequence erzeugt - die ist völlig unabhängig von deiner Tabelle.

Dann soll eine ID repliziert werden. Was bedeutet das genau? Ich denke mir folgendes für die Tabelle x:
Dein Trigger (before insert for each row) holt sich von der Sequence die nächste Nummer und vergibt die ID bei jedem neuen Datensatz - soweit, so gut.

Was soll bei den anderen Tabellen passieren? Soll jeweils auch ein neuer Datensatz entstehen mit der gleichen ID? Soll ein bereits bestehender Datensatz auf die neue ID umgesetzt werden?

Gruß

Sancho

hi!

oder soll nur ein master-detail-beziehung befüllt werden?

grüße,
tomh

Hallo,

Ich verstehe nicht ganz. Zunächst einmal hast du nur eine
Sequence erzeugt - die ist völlig unabhängig von deiner
Tabelle.

Dann soll eine ID repliziert werden. Was bedeutet das genau?
Ich denke mir folgendes für die Tabelle x:
Dein Trigger (before insert for each row) holt sich von der
Sequence die nächste Nummer und vergibt die ID bei jedem neuen
Datensatz - soweit, so gut.

Was soll bei den anderen Tabellen passieren? Soll jeweils auch
ein neuer Datensatz entstehen mit der gleichen ID? Soll ein
bereits bestehender Datensatz auf die neue ID umgesetzt
werden?

Folgendes ist zunächst mein Ziel:

die ID soll hochgezählt werden (n+1). Dann will ich, dass diese ID auch die ID für die restlichen Tabellen wird. Denn nachher will ich erreichen, dass die Ausgabe immer den selben Datensatz verwendet, der auch wirklich dazu gehört. Die Information besteht nämlich immer aus den Tabellen 1 bis 5.

Die sehen so aus:

SERVERPASS TABLE
SERVERPASS_INTERFACE TABLE
SERVERPASS_MODIFIED TABLE
SERVERPASS_SOFTWARE TABLE
SERVERPASS_SUPPORT TABLE

Ich habe die Informationen getrennt, da die Tabellen verschieden schnell wachsen/gefüttert werden. Jede besitzt einen PK, welcher die ID in dieser Tabelle ist. Die heissen der Einfachheit auch alle gleich.:smile:

Ich benötige das, da ich die Tabelle mit einem Formular in Access befülle und die letzten 4 kann ich nicht bearbeiten solange ich nicht den PK bestimmt habe - das soll von allein geschehen und nicht händisch.

Was eine „master-detail-beziehung“ ist weiss ich nicht - wenn es das ist was ich oben beschrieben habe, dann ja.

Hi,

die ID soll hochgezählt werden (n+1).

Dann will ich, dass
diese ID auch die ID für die restlichen Tabellen wird. Denn
nachher will ich erreichen, dass die Ausgabe immer den selben
Datensatz verwendet, der auch wirklich dazu gehört. Die
Information besteht nämlich immer aus den Tabellen 1 bis 5.

Die sehen so aus:

> SERVERPASS TABLE  
> SERVERPASS\_INTERFACE TABLE  
> SERVERPASS\_MODIFIED TABLE  
> SERVERPASS\_SOFTWARE TABLE  
> SERVERPASS\_SUPPORT TABLE

Das ist tatsächlich eine Master-Detail-Beziehung.

Ich habe die Informationen getrennt, da die Tabellen
verschieden schnell wachsen/gefüttert werden. Jede besitzt
einen PK, welcher die ID in dieser Tabelle ist. Die heissen
der Einfachheit auch alle gleich.:smile:

So, wie ich das verstanden habe, können mehrere Detail-Datensätze zu je einem Master-Datensatz gehören (z.B. mehrere Interfaces zu einem Server). Das ist eine sog. 1:n-Beziehung.
Deshalb wird dir ein PK nicht reichen. Du brauchst je ein PK für den Detail und ein FK (Foreign Key), der auf den Master zeigt. Das siet dann z.B. so aus:

SERVERPASS:
SP\_ID(PK) BEZEICHNUNG STANDORT 
--------- ----------- ----------------------------------
1 WEBS01 Serverraum A, Schrank 1.4, Reihe 2
2 FTPS01 Serverraum B, Schrank 2.3, Reihe 5
...

SERVERPASS\_INTERFACE:
SPI\_ID(PK) SP\_ID(FK) BEZEICHNUNG MAC\_ADRESSE
---------- --------- ----------- -----------
1 1 Intel PRO ab9ekuckuck
2 1 Andere 47110815bbb
3 1 Dritte fddfdfgdfgg
4 2 Einzige aber34545tt

Ich benötige das, da ich die Tabelle mit einem Formular in
Access befülle und die letzten 4 kann ich nicht bearbeiten
solange ich nicht den PK bestimmt habe - das soll von allein
geschehen und nicht händisch.

Logisch :smile:

Was ich damit zeigen will: du bräuchtest eine zweite Sequence für die SPI_ID. Die müßte erhöht werden bei jedem Einfügen eines Detail- Datensatzes; die SP_ID, die als FK dient, müßtest du nur beibehalten.

Ich glaube aber, du solltest dich ein bißchen eingehender mit der Materie befassen, speziell mit dem reltionalen Modell. In der Brettbeschreibung gibt es hilfreiche Links dazu (Kelz z.B.).

Gruß

Sancho