AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ID bei neuem Datensatz automatisch hochzählen

ID bei neuem Datensatz automatisch hochzählen

Ein Thema von Luca Haas · begonnen am 3. Nov 2017 · letzter Beitrag vom 6. Nov 2017
Antwort Antwort
Seite 1 von 2  1 2   
Luca Haas

Registriert seit: 23. Aug 2017
Ort: Bad Breisig
139 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

ID bei neuem Datensatz automatisch hochzählen

  Alt 3. Nov 2017, 15:35
Datenbank: MSSQL • Version: ? • Zugriff über: TADO Query
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.
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: ID bei neuem Datensatz automatisch hochzählen

  Alt 3. Nov 2017, 15:38
Das hört sich sehr nach ner Identity spalte an,

vielleicht hilft die dir.

https://docs.microsoft.com/de-de/sql...ntity-property

@EDIT
und dann herauszufinden welche zuletzt eingefügt wurde, kann man sich das per SELECT SCOPE_IDENTITY() auslesen.
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: ID bei neuem Datensatz automatisch hochzählen

  Alt 3. Nov 2017, 15:38
Wäre auch gefährlich. Ich würde das durch das DBMS erledigen lassen. Bei MSSQL gibt es dafür den Feldtyp COUNTER
Markus Kinzler
  Mit Zitat antworten Zitat
Luca Haas

Registriert seit: 23. Aug 2017
Ort: Bad Breisig
139 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: ID bei neuem Datensatz automatisch hochzählen

  Alt 3. Nov 2017, 15:49
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.
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: ID bei neuem Datensatz automatisch hochzählen

  Alt 3. Nov 2017, 15:51
"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 ?
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !
  Mit Zitat antworten Zitat
Luca Haas

Registriert seit: 23. Aug 2017
Ort: Bad Breisig
139 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: ID bei neuem Datensatz automatisch hochzählen

  Alt 3. Nov 2017, 16:38
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 ?
  Mit Zitat antworten Zitat
Benutzerbild von Mokus
Mokus

Registriert seit: 24. Sep 2013
165 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

AW: ID bei neuem Datensatz automatisch hochzählen

  Alt 3. Nov 2017, 16:43
https://docs.microsoft.com/de-de/sql...t-transact-sql

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.
Markus
es gibt nur 10 arten von menschen !
die die binär verstehen und die die nicht. !
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: ID bei neuem Datensatz automatisch hochzählen

  Alt 3. Nov 2017, 16:45
Das Auffüllen kann in bestimmten Fällen Sinn machen. Es gibt aber auch viele Szenarien, in welchen es zu Problemen führen kann.
Markus Kinzler
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#9

AW: ID bei neuem Datensatz automatisch hochzählen

  Alt 3. Nov 2017, 16:45
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.275 Beiträge
 
Delphi 12 Athens
 
#10

AW: ID bei neuem Datensatz automatisch hochzählen

  Alt 3. Nov 2017, 16:46
Moin...

Zitat:
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.
Du brauchst eine Kombination aus beidem.

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.

Geändert von haentschman ( 3. Nov 2017 um 16:58 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz