Microsoft MVPs inside





 MCSEboard.de – IT Pro Forum zu Windows Server 2008 R2 / 2008 / 2003 & Windows 7 / Vista / XP
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

MS SQL Server Forum


Alles zum Thema Microsoft SQL Server — Q & A zu Microsoft SQL Server 2000 / 2005 / 2008 Architektur, Konfiguration, Troubleshooting


Antwort
     
Themen-Optionen
Alt 11.01.2012, 15:27   #1
Newbie
 
Offline
Registriert seit: 01-2012
Beiträge: 3
Identifier selbst erzeugen (anstelle autoinc)

Hallo zusammen

Was ist im SQL Server der beste Weg, eine eigene ID (integer!) zu erstellen?
Problem ist, dass ich über mehrerere Tabellen eine eindeutige int ID benötige.

Via Trigger habe ich nun erfahren, ist dies nicht möglich wie z.B. bei oracle

Ich habe eine Tabelle mit einem Int Zähler, via StoredProc getNextId() wird der nächste Wert erzeugt und zurückgegeben.
Wo bzw. wie kann ich dies erreichen oder existiert eine andere Möglichkeit?

Vielen Dank für die Tipps

Dave
    Mit Zitat antworten
Alt 11.01.2012, 15:33   #2
Board Veteran
 
Online
Registriert seit: 12-2008
Beiträge: 4.670
Das heißt bei MsSql Identität:
IDENTITY-Eigenschaft (Transact-SQL)
    Mit Zitat antworten
Alt 11.01.2012, 16:18   #3
Newbie
 
Offline
Registriert seit: 01-2012
Beiträge: 3
Hallo Dukel

Die Eigenschaft kenne ich, die bezieht sich nur pro Tabelle.

Ich möchte ein eindeutige ID (integer) über mehrere Tabellen, daher funktioniert das leider nicht.

Gibt es dafür keine zu automatisierende Möglichkeit?

Gruss

Dave
    Mit Zitat antworten
Alt 11.01.2012, 16:25   #4
Expert Member
 
Offline
Registriert seit: 07-2005
Beiträge: 11.339
Ein Stichworte für Google:

"primary key", "foreign key"

Identische Keys über mehre Tabellen werden damit verwaltet, die Integrität durch die Datenbank sichergestellt und doppelte Werte sind nicht möglich. Die kann man dann auch beim "Joinen" verwenden.

Beispiel: SQL Foreign Key

Signatur
Wen du nicht mit Können beeindrucken kannst, den verwirre mit Schwachsinn!

    Mit Zitat antworten
Alt 11.01.2012, 18:45   #5
Newbie
 
Offline
Registriert seit: 01-2012
Beiträge: 3
Hallo

Mir sind Foreign Key etc. sicherlich bekannt.
Ich möchte einen Tabellenübergreifenden Surrogatschlüssel:

verschiedene Tabellen (Katalog, Album, Track etc.) die alle hierarchisch - auch innerhalb der gleichen Tabelle - eine Struktur aufbauen.
Dadurch, dass der Primärschlüssel bei allen Tabellen nie mehrfach vorkommt, lassen sich diese Tabellen hierarchisch verknüpfen.
Eine View listet alle rows dieser Tabellen (select id, parent_id, description Katalog union.... Album.... union Track).
Ein Treeviewcontrol veranlasst mich zu dieser etwas merkwürdigen Struktur, da es via ID und parentID die Hierarchie automatisch aufbaut.

Deshalb möchte ich einen generierten Identifier haben.

Gruss

Dave
    Mit Zitat antworten
Alt 04.02.2012, 21:22   #6
Board Veteran
 
Offline
Registriert seit: 07-2005
Ort: Hamburg
Beiträge: 524
Hallo,

ich würde die Tabellen nicht anfassen, bzw. die IDENTITY-Spalte weglassen.
Wenn nur 2 Tabellen mittels UNION zu verknüpfen sind, könntest du bei einer
Tabelle die ID von -1 absteigend erzeugen lassen.

Das das wohl aber nicht der Fall sein wird, würde ich beim Erzeugen des UNION
eine neue eindeutige Spalte erzeugen. Kommt ein bischen auf die Daten und auf das Format an, was du zur Weiterverarbeitung brauchst,
z.B.:

SELECT ID, ...
FROM TabA
UNION
SELECT ID * 100000, ...
FROM TabB
...

oder
SELECT 'A' + CAST(ID AS varchar) AS ID, ...
FROM TabA
UNION
SELECT 'B' + CAST(ID AS varchar), ...
FROM TabB
...


Gruß Kai
    Mit Zitat antworten
Alt 21.02.2012, 01:27   #7
Expert Member
 
Benutzerbild von phoenixcp
 
Offline
Registriert seit: 02-2004
Ort: Radebeul
Beiträge: 5.470
Dadurch, dass der Primärschlüssel bei allen Tabellen nie mehrfach vorkommt, lassen sich diese Tabellen hierarchisch verknüpfen.
Deshalb möchte ich einen generierten Identifier haben.
Und was hälst du dann von GUIDs? NEWID

Die Wahrscheinlichkeit das es hierbei zu Dopplungen kommt ist deutlich geringer als das du nen 6er im Lotto hast... Oder eher: das du mehrere 6er im Lotto hast. Sollte also für deine Anforderungen ausreichen, oder? :-)

Gruß
Carsten

Signatur
MfG

Carsten Paul
MCSEBoard.de SQL Blog
Kein Support per PN, dafür ist das Forum da!

In Memory of LukasB

    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
2K3 - Kennwortablaufmeldung selbst erzeugen frieda Windows Server Forum 2 27.10.2008 12:02
XP - Sicherheitsprinzipale anstelle von Gruppen muthelm Windows Forum — LAN & WAN 5 18.12.2007 14:01
Druckermeldungen selbst erzeugen jonep Windows Forum — Allgemein 0 17.12.2003 09:15
Schwarze Balken, anstelle von Symbolen? Invisigod Windows Forum — Allgemein 6 11.12.2003 20:03
Auslesen der GUID (globally unique identifier) ASH Windows Forum — Allgemein 6 30.07.2003 18:04


Alle Zeitangaben in MEZ/CET. Es ist jetzt 20:09 Uhr. Seite generiert in 0,031 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang