![]() |
Datenbank: MSSQL • Version: ? • Zugriff über: TADO Query
ID bei neuem Datensatz automatisch hochzählen
Hi Leute,
wie es im Titel schon steht versuche ich mich gerade daran, die ID einer Datenbank-Tabelle mit jedem neuen Datensatz um eins hochzuzählen. Im Internet habe ich dazu nicht allzu viel gefunden, lediglich, dass ich mit SELECT MAX(ID) den höchsten Wert für ID herausfinden kann und diesen dann mit +1 erhöhe, allerding verstehe ich nicht wirklich wie ich das machen soll. |
AW: ID bei neuem Datensatz automatisch hochzählen
Das hört sich sehr nach ner Identity spalte an,
vielleicht hilft die dir. ![]() @EDIT und dann herauszufinden welche zuletzt eingefügt wurde, kann man sich das per SELECT SCOPE_IDENTITY() auslesen. |
AW: ID bei neuem Datensatz automatisch hochzählen
Wäre auch gefährlich. Ich würde das durch das DBMS erledigen lassen. Bei MSSQL gibt es dafür den Feldtyp COUNTER
|
AW: ID bei neuem Datensatz automatisch hochzählen
Mmh okay, ich habe ich jetzt ein wenig in Auto_Increment eingelesen und versuche es mal damit.
Erfüllt zwar nicht 100% seinen Zweck, aber kommt doch sehr nah an das gewollte Ergebnis ran. |
AW: ID bei neuem Datensatz automatisch hochzählen
"Erfüllt zwar nicht 100% seinen Zweck"
zu begin wolltest du eine möglichkeit es immer um X hochzuzählen, das wäre genau das. & was erwartest du ? ;) |
AW: ID bei neuem Datensatz automatisch hochzählen
Jetzt habe ich nämlich das Problem, dass ich die ID nicht mehr ändern kann. Da ich einen Wert gelöscht habe, sehen meine ID´s nun so aus "1, 2, 3, 5, 6" und ich kann es leider nicht mehr rückgängig machen.
Oder gibt es doch eine Möglichkeit die "fehlenden" ID´s einzusetzen ? |
AW: ID bei neuem Datensatz automatisch hochzählen
![]() also es gibt die möglichkeit identity insert übersteuern, aber dann müsste man sich die nächste halt von hand ermitteln. Und ob du dir da ein gefallen mit auto inc. spalten tust, bezweifel ich. Dabei hilft dir dann aber auch max(Spalte) + 1 ja auch nicht ... falls du nachher keine antwort hast schau ich nochmal ob ich da noch ein SQL finde, was sowas ermittelt, das hört sich nämlich nach einem bekannten Problem an. |
AW: ID bei neuem Datensatz automatisch hochzählen
Das Auffüllen kann in bestimmten Fällen Sinn machen. Es gibt aber auch viele Szenarien, in welchen es zu Problemen führen kann.
|
AW: ID bei neuem Datensatz automatisch hochzählen
Wofür möchtest Du die ID benutzen?
Wenn es um einen Primärschlüssel geht: Der benötigt keine "nahtlose", aufsteigende Folge von Zahlen, nicht mal Zahlen, nur Eindeutigkeit. Wenn es tatsächlich um eine nahtlose, aufsteigende Zahlenfolge geht, musst Du relativ viel aufwand treiben, falls mit der Nutzung bspw. einer Sequenz und folgender Löschung auch Lücken gefüllt werden müssen. max(id) reicht dann offensichtlich nicht mehr. |
AW: ID bei neuem Datensatz automatisch hochzählen
Moin...:P
Zitat:
1: Die ID aus der IDENTIY > die macht den Datensatz global eindeutig 2: Die ID aus dem "dass ich mit SELECT MAX(ID) den höchsten Wert für ID herausfinden kann + 1" und einem Update von dem entsprechenen Datensatz. -> 2 Felder sind die Lösung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz