Ergebnis 1 bis 3 von 3

Thema: serial hinzufügen und dabei ordnen

  1. #1
    beho ist offline Benutzer
    Registriert seit
    24.10.2006
    Ort
    Erfurt
    Beiträge
    64

    Standard serial hinzufügen und dabei ordnen

    Hallo,

    innerhalb einer Tabelle habe ich sehr viele Werte, aber keine explizit so genannte id, die auf einem serial beruht... die Daten liegen ungeordnet vor.
    Nun möchte ich die Daten innerhalb der Tabelle nach einer bereits vorhandenen Spalte ordnen und anschließend mit dieser Ordnung ein serial Attribut hinzufügen...

    Das das so einfach nicht geht, weiß ich. Leider kann ich die Tabelle nicht umkopieren, da ständig neue Daten auflaufen.
    Meine Momentane Idee ist, eine id integer Spalte hinzuzufügen, mit einer Function die id nach meiner Ordnung zu inkrementieren und anschließend eine Sequenz zu erstellen...

    Habt ihr bessere Ideen?
    Viele Grüße
    beho

  2. #2
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.472

    Standard

    Zitat Zitat von beho Beitrag anzeigen
    Hallo,

    innerhalb einer Tabelle habe ich sehr viele Werte, aber keine explizit so genannte id, die auf einem serial beruht... die Daten liegen ungeordnet vor.
    Nun möchte ich die Daten innerhalb der Tabelle nach einer bereits vorhandenen Spalte ordnen und anschließend mit dieser Ordnung ein serial Attribut hinzufügen...

    Das das so einfach nicht geht, weiß ich. Leider kann ich die Tabelle nicht umkopieren, da ständig neue Daten auflaufen.
    Meine Momentane Idee ist, eine id integer Spalte hinzuzufügen, mit einer Function die id nach meiner Ordnung zu inkrementieren und anschließend eine Sequenz zu erstellen...

    Habt ihr bessere Ideen?
    Viele Grüße
    beho
    Du wirst wohl um eine komplette Tabellensperre nicht drum herum kommen. Geht das? Falls ja, das Zufügen der ID-Spalte und die Sortierung der bisherigen Zeilen könnte so erfolgen:

    Code:
    test=# select * from unsortiert ;
       s
    -------
     bla
     fasel
     a
     u
     b
     x
    (6 rows)
    
    test=*# alter table unsortiert add column id int;
    ALTER TABLE
    test=*# create sequence unsort;
    CREATE SEQUENCE
    test=*# update unsortiert set id = bla.id from (select nextval('unsort') as id, foo.s from (select s from unsortiert order by s)foo) bla where unsortiert.s=bla.s;
    UPDATE 6
    test=*# select * from unsortiert ;
       s   | id
    -------+----
     a     |  1
     b     |  2
     bla   |  3
     fasel |  4
     u     |  5
     x     |  6
    (6 rows)
    Dann die ID-Spalte einen Constraint setzen, daß das nextval() von der Sequence wird.


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  3. #3
    beho ist offline Benutzer
    Registriert seit
    24.10.2006
    Ort
    Erfurt
    Beiträge
    64

    Standard

    Hallo Andreas,

    nein, ich kann die Tabelle leider nicht sperren. Da laufen in einem festen Intervall Messdaten auf. Leider ist der Intervall auch zu klein, bzw. die Datenmenge zu groß um alles im Zwischenzeitraum abzuarbeiten.

    Ich werd das wohl lassen müssen und drauf hoffen, dass mir entsprechende Indizees den Zeitverlust beim auslesen wieder ausgleichen.

    Viele Grüße
    beho

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 24.10.2010, 07:52
  2. Datentyp serial
    Von franz im Forum SQL
    Antworten: 5
    Letzter Beitrag: 27.01.2010, 13:50
  3. Tabelle neu ordnen
    Von Sauerkraut im Forum SQL
    Antworten: 11
    Letzter Beitrag: 27.07.2009, 11:44
  4. Berliner Strassen nach Bezirke Ordnen
    Von Deniz2009 im Forum Allgemeines
    Antworten: 1
    Letzter Beitrag: 08.01.2009, 04:12
  5. insert mit id(serial)
    Von gnoerz im Forum SQL
    Antworten: 13
    Letzter Beitrag: 23.01.2006, 23:21

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum