mistercode 10 Geschrieben 11. Januar 2012 Melden Teilen Geschrieben 11. Januar 2012 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 Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 11. Januar 2012 Melden Teilen Geschrieben 11. Januar 2012 Das heißt bei MsSql Identität: IDENTITY-Eigenschaft (Transact-SQL) Zitieren Link zu diesem Kommentar
mistercode 10 Geschrieben 11. Januar 2012 Autor Melden Teilen Geschrieben 11. Januar 2012 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 Zitieren Link zu diesem Kommentar
zahni 554 Geschrieben 11. Januar 2012 Melden Teilen Geschrieben 11. Januar 2012 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 Zitieren Link zu diesem Kommentar
mistercode 10 Geschrieben 11. Januar 2012 Autor Melden Teilen Geschrieben 11. Januar 2012 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 Zitieren Link zu diesem Kommentar
hh2000 10 Geschrieben 4. Februar 2012 Melden Teilen Geschrieben 4. Februar 2012 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 Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 21. Februar 2012 Melden Teilen Geschrieben 21. Februar 2012 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 Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.