mehrere SEQUENCE in einer Tabelle erstellen lassen

Hallo

Ich habe folgende Tabellen:

TABLE landslide
[TABLE=“class: grid, width: 150”]
[TR]
[TD]lnumber[/TD]
[TD]lname[/TD]
[TD]northing[/TD]
[TD]easting[/TD]
[TD]datum[/TD]
[TD]PNO[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]blabla[/TD]
[TD]2222222[/TD]
[TD]3333333[/TD]
[TD]2012-12-12[/TD]
[TD]1[/TD]
[/TR]
[/TABLE]

landslides sind Massenbewegungen in der Natur

TABLE landslide_parts
[TABLE=“class: grid, width: 150”]
[TR]
[TD]plandslide[/TD]
[TD]scarp[/TD]
[TD]accumulation[/TD]
[TD]front[/TD]
[TD]other[/TD]
[/TR]
[TR]
[TD]1[/TD]
[TD]scp0001[/TD]
[TD]acc0001[/TD]
[TD]fr0001[/TD]
[TD]other0001[/TD]
[/TR]
[TR]
[TD]2[/TD]
[TD]scp0002[/TD]
[TD]acc0002[/TD]
[TD]NULL[/TD]
[TD]NULL[/TD]
[/TR]
[/TABLE]

das sind die Teile einer Massenbewegung, die nicht immer alle vorhanden sind

TABLE scarp
[TABLE=“class: grid, width: 150”]
[TR]
[TD]scpnom[/TD]
[TD]height[/TD]
[TD]…[/TD]
[/TR]
[TR]
[TD]scp0001[/TD]
[TD]5[/TD]
[TD]…[/TD]
[/TR]
[TR]
[TD]scp0002[/TD]
[TD]6[/TD]
[TD]…[/TD]
[/TR]
[TR]
[TD]…[/TD]
[TD]…[/TD]
[TD]…[/TD]
[/TR]
[/TABLE]

hier liegen die Eigenschaften des Teiles “Abriss” (scarp) vor

Die Verknuepfung geschieht ueber lnumber + plandslide, bzw. scarp + scpnom

Meine erste Frage lautet ob der Weg ueber die mittlere Tablle ueberhaupt notwendig ist, oder die Spalten auch in die obere einfuegen kann!?

Fuer die mittlere Tabelle moechte ich jetzt, dass die IDs, wie zum Beispiel ‘scp0001’ automatisch eingetragen und hochgezaehlt werden, wenn ueber eine Eingabemaske angegeben wird das es einen Teil Abriss gibt. Fuer eine weitere Massenbewegung die eingetragen wird, soll dann auf ‘scp0002’ gezaehlt werden. Und das dann fuer jeden Teil!
Wie kann ich das denn realisieren? Muesste man noch eine Spalte mit yes/no (BOOLEAN) erstellen, die den Wert dann uebergibt?

Gruss und Dank

F3RK3L

So ganz verstanden habe ich Dein Problem möglicherweise nicht, aber mal so als Spielerei:

test=# create sequence f3rk3l_seq;
CREATE SEQUENCE
test=*# create table f3rk3l (id serial, t text default 'scp' || nextval('f3rk3l_seq')::text);
NOTICE:  CREATE TABLE will create implicit sequence "f3rk3l_id_seq" for serial column "f3rk3l.id"
CREATE TABLE
test=*# insert into f3rk3l values (default, default);
INSERT 0 1
test=*# insert into f3rk3l values (default, default);
INSERT 0 1
test=*# insert into f3rk3l values (default, default);
INSERT 0 1
test=*# select * from f3rk3l;
 id |  t
----+------
  1 | scp1
  2 | scp2
  3 | scp3
(3 rows)

Andreas

Besser:

test=# create sequence f3rk3l_seq;
CREATE SEQUENCE
test=*# create table f3rk3l (id serial, t text default 'scp' || to_char(nextval('f3rk3l_seq'),'FM0009'));
NOTICE:  CREATE TABLE will create implicit sequence "f3rk3l_id_seq" for serial column "f3rk3l.id"
CREATE TABLE
test=*# insert into f3rk3l values (default, default);
INSERT 0 1
test=*# insert into f3rk3l values (default, default);
INSERT 0 1
test=*# select * from f3rk3l;
 id |    t
----+---------
  1 | scp0001
  2 | scp0002
(2 rows)

Andreas

Schon mal vielen Dank, ich werde es ausprobieren.

Wie würde das denn aussehen, wenn ich das machen möchte

[TABLE=“class: grid, width: 150”]
[TR]
[TD]id
[/TD]
[TD]t
[/TD]
[TD]r
[/TD]
[TD]q
[/TD]
[/TR]
[TR]
[TD]1
[/TD]
[TD]scp0001
[/TD]
[TD]a0001
[/TD]
[TD]b0001
[/TD]
[/TR]
[TR]
[TD]2
[/TD]
[TD]scp0002
[/TD]
[TD]a0002
[/TD]
[TD]NULL
[/TD]
[/TR]
[/TABLE]


Stefan

Ach komm, ausgehend von meinem Beispiel schaffst das jetzt bestimmt selber, oder?


Andreas

Ich bemühe mich =)

Ok. Das Prinzip hab ich generell verstanden, aber bei meinem konkreten Fall ist mir noch was nicht klar.

Wie bringe ich ihm denn bei, dass er keinen Wert oder NULL eintragen soll, wenn zum Beispiel kein Teil Front oder wie in der letzten Tabelle kein Wert für ‘q’ vorhanden wäre.
Also: die Massenbewegung Nr.1 hat eine Front >>> ‘fr0001’
Nr.2 hat keine Front >>> NULL
NR.3 hat eine Front >>> ‘fr0003’
usw.

Mich würde auch interessieren, wie man Werte automatisch einfügen lassen kann, wenn ein bestimmter Wert in der Tabelle steht.
Also wenn in eine Spalte “Obst” ‘apfel’ eingetragen wird, dass die Spalte “Form” mit ‘rund’ gefüllt wird.

Stefan

Ganz allgemein kann man solche und andere Probleme oft mit einem TRIGGER lösen.


Andreas