Jump to content

Identifier selbst erzeugen (anstelle autoinc)


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar

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

Link zu diesem Kommentar
  • 4 Wochen später...

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

Link zu diesem Kommentar
  • 3 Wochen später...
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

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...