none
Hilfe bei Massenupdate RRS feed

  • Frage

  • Hallo an alle,

    ich habe ein großes Problem. Ich habe hier Produktionszahlen eine Produktionsdauer besteht aus Anfang und Ende. Diese Zeitstempel werden ermittelt und bei Produktionsende in eine Datenbank geschrieben. Dabei wird zuvor die letzte ID in der Tabelle ermittelt und um +1 erhöht. Somit ist die neue ID bestimmt und nun wird der Datensatz in die Tabelle geschrieben.

    ID       Verwendung  Anfang                                       Ende

    31       Maschine_4   2017-06-12 04:04:00.000           2017-06-12 05:30:00.000

    Nun komme ich zum eigentlichen Problem. Die ID´s sind doppelt und dreifach! Was ja nicht wirklich Sinn macht! Mir wurde aber zugesichert das ich die ID´s ohne Probleme neu vergeben kann.

    Das heißt ich könnte an Hand des Zeitstempels nach einander die ID neu vergeben. Der erste Zeitstempel hat die ID =1 der zweite Zeitstempel die ID=2 usw.

    Ich habe so etwas noch nie gemacht und würde mich freuen wenn ihr mir ein paar tipps geben könntet.

    Montag, 12. Juni 2017 12:39

Antworten

Alle Antworten

  • Hallo,

    Um die ID's neu in der Reihenfolge des Datums neu zu vergeben kannst Du die ROW_NUMBER (Transact-SQL) zur Berechnung verwenden; Beispiel anhand einer Systemtabelle, die es in jeder DB gibt:

    SELECT name, create_date, ROW_NUMBER() OVER(ORDER BY create_date) AS LaufendeNr
    FROM sys.objects


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Montag, 12. Juni 2017 13:17
  • SUPI! riesen Dankeschön! ich wusste nicht das es so was wie OVER gibt! Also doppelt soviel gelernt! Vielleicht kannst du mir auch noch so einen Tipp geben. Man könnte doch auch die Funktion ROW_Number nehmen um die ID´s beim insert in die Tabelle zu ermitteln? Macht man das so oder geht man er den oben beschriebenen Weg? Ansonsten kenne ich das automatische ermitteln der ID mit einem hochzählen der ID  nur über ID-Ausgangswert auf Spaltenebene. Jedoch habe ich da das Problem das hier nicht unterschieden wird wer gerade schreiben will. Denn Maschine_4 soll die gleiche ID haben können wie Maschine_5.   

    Montag, 12. Juni 2017 13:58
  • Theoretisch kann man auch beim INSERT das verwenden, wird nur etwas auf die Performance gehen, da immer alle Datensätze durchzählen muss.

    Für dei automatische Vergabe bei ID's verwendet man besser IDENTITY oder SEQUENCE.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Montag, 12. Juni 2017 15:51