Jump to content
Sign in to follow this  
mistercode

Identifier selbst erzeugen (anstelle autoinc)

Recommended Posts

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...