1 spalte in 2 tabellen

Hallo
ich hoffe ich bin hier richtig. Also ich habe derezit 2 Tabellen und ich will in meiner 2. tabelle eine spalte aus der ersten tabelle…ich dachte das geht über fkeys aber wie ich gelsen habe prüfen die nur on der wert in der ersten tabelle existiert. ich möchte aber wenn ich beispielsweise eine neue spalte in der 1. tabelle anlege automatisch dein spaltenwert der 1. tabelle in meine 2. tabelle bekommen. Wisst ihr wie man das machen kann…bzw. kann man das auch auf bestehene einträge anwenden?

Vielen Dank

Uh, bitte das nächste Mal etwas deutlicher schreiben.

Hmm, was du machen möchtest, kann man mit einem Trigger und einer Funktion erledigen. Der Trigger wird beim INSERT gefeuert und die Funktion trägt dann den Wert in die zweite Tabelle ein.

Warum möchtest du denn den Wert in zwei Tabellen haben, das widerspricht eigentlich den meisten Konzepten. Und was ist das für ein Wert?

Klingt bis hier nach einem VIEW.

ich dachte das geht über fkeys aber wie ich gelsen habe prüfen die nur on der wert in der ersten tabelle existiert.

Korrekt.

ich möchte aber wenn ich beispielsweise eine neue spalte in der 1. tabelle anlege

Moment. Neue Spalten legt man mit ALTER TABLE ADD COLUMN an, meinst Du das oder meinst Du ein INSERT eines neuen Wertes?

automatisch dein spaltenwert der 1. tabelle in meine 2. tabelle bekommen. Wisst ihr wie man das machen kann…

Ich unterstelle mal, Du meinst bei einem INSERT eines neuen Wertes in die 1. Tabelle soll davon der neue Wert einer bestimmten Spalte auch in der 2. Tabelle erscheinen. Dazu kann man TRIGGER verwenden.

bzw. kann man das auch auf bestehene einträge anwenden?

Dazu kann man INSERT verwenden, welches seine Werte aus einem SELECT bezieht.

Sinngemäß: insert into tab2 (column) select column from tab1;


Andreas

ok ich wills mal ‘aufmalen’ :smiley:

Tabelle1:
ID | Name | …

01 | Test |
02 | Test2|

Tabelle2:
ID | Ort |…

Die Tabelle2.ID soll Tabelle1.ID sein. Sprich. Wenn ich in Tabelle1 eine neue ID hinzufüge/lösche soll dies auch in Tabelle 2 geschehen. da ich in Tabelle1 derzeit einige Datensätze haben SOLLTEN (kein muss) diese rückwirkend auf Tabelle2 eingefügt werden.

Sowohl ads als auch ich nannten Dir die Lösung. Hier noch einmal: TRIGGER

da ich in Tabelle1 derzeit einige Datensätze haben SOLLTEN (kein muss) diese rückwirkend auf Tabelle2 eingefügt werden.

Auch dafür nannte ich Dir die Lösung.


Andreas

ok vielen dank…war nur um sicherzustellen, dass wir nich aneinander vorbeireden. Gibt es ein gutes Tutorial (neben der Hilfe) in wlechem das erstellen von Triggern mit pgAdmin beschrieben wird?

Inwieweit PGAdmin das verkompliziert, weiß ich nicht.

test=# create table tab1 (id int, val text);
CREATE TABLE
test=*# create table tab2 (id int, val text);
CREATE TABLE
test=*# create function f1() returns trigger as $$begin insert into tab2 (id) values (NEW.id); return NEW; end; $$language plpgsql;
CREATE FUNCTION
test=*# create trigger tg1 before insert on tab1 for each row execute procedure f1();
CREATE TRIGGER
test=*# insert into tab1 values (1, 'test');
INSERT 0 1
test=*# select * from tab2;
 id | val
----+-----
  1 |
(1 row)

test=*#

Andreas