AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi PRIMARY KEY - doppelter Schlüssel...

PRIMARY KEY - doppelter Schlüssel...

Ein Thema von Geist · begonnen am 2. Feb 2008 · letzter Beitrag vom 2. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2   
Geist

Registriert seit: 21. Jun 2006
Ort: Neu-Seeland
24 Beiträge
 
#1

PRIMARY KEY - doppelter Schlüssel...

  Alt 2. Feb 2008, 07:15
Datenbank: SQLExpress • Zugriff über: ADO
Hallo zusammen,

ich betreibe die Programmiererei nur so zum totschlagen der Freizeit, bin also relativer Anfänger. Vor einiger Zeit hatte ich mich schon mal an Datenbanken versucht, jetzt will ich das ganze noch mal angehen.
Mein Ziel ist es eine Tabelle anzulegen die (damit es erst mal einfach bleibt) aus zwei Spalten besteht. Spalte1: laufende Nummer, Spalte2 Name.
Erstellt habe ich die Tabelle mit PRIMARY KEY auf Spalte1, laufende Nummer.
Gibt es eine Möglichkeit beim Einfügen von Datensätzen die 'laufende Mummer' immer entsprechend automatisch zu erhöhen?
Vielen Dank schon mal.
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#2

Re: PRIMARY KEY - doppelter Schlüssel...

  Alt 2. Feb 2008, 07:18
hier wird gemeinhin ein trigger empfohlen. wenn dir das zu kompliziert ist, solltest du dir selbst 'n kleines nummernkreisobjekt schreiben und dort die nummern lösen... als schlechteste möglichkeit sehe ich die autoincrement felder an (weiss nicht ob MS sql server welche unterstützt, ein blick in die doku sollte jedoch klarheit bringen), denn mit denen gibt es normal nur probleme.

<HTH>

Edit: Normal sollte man keine autoincrements verwenden... ein ordentlicher schlüsselbegriff ist da zumeist mehr wert
  Mit Zitat antworten Zitat
Geist

Registriert seit: 21. Jun 2006
Ort: Neu-Seeland
24 Beiträge
 
#3

Re: PRIMARY KEY - doppelter Schlüssel...

  Alt 2. Feb 2008, 07:22
wie muss ich mir das mit den Triggern vorstellen?
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#4

Re: PRIMARY KEY - doppelter Schlüssel...

  Alt 2. Feb 2008, 07:27
Zitat von grenzgaenger:
...(weiss nicht ob MS sql server welche unterstützt,...
Unabhängig davon ob es gut oder schlecht ist. Es geht natürlich.
Miniaturansicht angehängter Grafiken
id_feld_531.jpg  
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#5

Re: PRIMARY KEY - doppelter Schlüssel...

  Alt 2. Feb 2008, 07:35
tipp, schau mal in den db handbuch, ist sowieso von datenbank zu datenbank verschieden. aber prinzipiell geht das wie folgt...

create trigger before insert on tabelle....

und da holst du dir aus deinen generator eine neue nummer für deine tabelle ab... diese schreibste dann im trigger (vor dem einfügen des datensatzes) in deine tabelle fort.

und schon, läuft das ...
  Mit Zitat antworten Zitat
Geist

Registriert seit: 21. Jun 2006
Ort: Neu-Seeland
24 Beiträge
 
#6

Re: PRIMARY KEY - doppelter Schlüssel...

  Alt 2. Feb 2008, 08:04
kommen wir mal auf das AutoIncrement zurück. Wie funktioniert das denn genau?
Also Tabelle vorhanden, ich möchte neuen Datensatz speichern, 'laufende Nummer' soll automatisch inc werden.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: PRIMARY KEY - doppelter Schlüssel...

  Alt 2. Feb 2008, 08:16
Hallo Heiko,

welchen SQL-Server verwendest du?

da die Tabelle bereits existiert, muss das Schlüsselfeld entprechend angelegt sein. Der SQL Server (egal welches Fabrikat) füllt den nächsten Schlüsselwert bei einem INSERT Statement automatisch ein. Du fütterst befüllst dann nur die restlichen Felder.

Freundliche Grüße
  Mit Zitat antworten Zitat
Geist

Registriert seit: 21. Jun 2006
Ort: Neu-Seeland
24 Beiträge
 
#8

Re: PRIMARY KEY - doppelter Schlüssel...

  Alt 2. Feb 2008, 09:04
ich benutze den SQL Server 2005 Express
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#9

Re: PRIMARY KEY - doppelter Schlüssel...

  Alt 2. Feb 2008, 09:41
Vergleiche deine Tabellenstruktur mit dieser:

SQL-Code:
CREATE TABLE demo (
  lfdnr INT IDENTITY(10,5),
  name NVARCHAR(100),
  CONSTRAINT pk_demo PRIMARY KEY (lfdnr)
)
Durch den Zusatz IDENTITY(10,5) wird eine automatische Vergabe von Schlüsselwerten beim Server beauftragt. Der erste mit INSERT eingefügte Datensatz erhält lfdnr = 10, die nächsten lfdnr = 15, 20, 25, ... - die 10 ist der Startwert, die 5 das Increment.
Fehlt die Angabe IDENTITY, dann bist du selbst für die Schlüsselvergabe verantwortlich. Vergibst du keinen Schlüssel, dann erhält der erste und alle folgenden Datensätze lfdNr = NULL, was schon beim zweiten INSERT zu der von dir beobachteten Fehlermeldung führt.

Freundliche Grüße
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: PRIMARY KEY - doppelter Schlüssel...

  Alt 2. Feb 2008, 09:46
Sind bei MSSQL NULL-Werte bei Primärschlüsseln erlaubt?
Markus Kinzler
  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 23:36 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