Ilja: MS SQL 2008 R2 Identity spalten

Beitrag lesen

moin Hopsel,

Ich nehme an, du brauchst das aus gutem Grund. So ganz erschliesst sich mir der Sinn nämlich nicht. =)

jup, ist eine grundsätzliche regel, keine fachlichkeit in primärschlüsseln, hat sich immer wieder bewährt. was ich neben dem künstlichen schlüssel brauche, ist eben ein fachlicher schlüssel, das kann man sich zum beispiel als namen für einen geschäftspartner vorstellen, der eindeutig (und not null) sein muss und sprechend ist. nur in diesem falle brauche ich eben einen automatisch erzeugten fachlichen schlüssel.

In MS SQL gibt es NEWSEQUENTIALID() und NEWID(), mit denen du allerdings "nur" GUIDs automatisch erzeugen kannst. Diese Funktionen können natürlich auch als DEFAULT-Parameter für Attribute angegeben werden.

CREATE TABLE test (

id INTEGER PRIMARY KEY IDENTITY,
  id2 UNIQUEIDENTIFIER DEFAULT NEWSEQUENTIALID(),
  -- ...
);

  
dank für den hinweis und ich habe das mal ausprobiert, grundsätzlich ok von der funktionalität, er macht das, was ich eigentlich will, aber die inhalte sind doch recht "unschön", wenn man das als techniker überhaupt sagen darf, ohne ausgelacht zu werden....  
  

> Fortlaufende Zahlen wirst du über Trigger oder Stored Procedures erzeugen müssen. Je nachdem in welchem Zusammenhang id2 mit id steht, könnte man auch über eine berechnete Spalte nachdenken.  
> Wobei folgendes CREATE-Statement mMn reichlich sinnfrei ist:  
> ~~~sql

CREATE TABLE test (  

>   id INTEGER PRIMARY KEY IDENTITY,  
>   id2 AS (id),  
>   -- ...  
> );

ich denke auf den trigger wird es bei MS SQL wohl hinaus laufen, wird zeit, dass die endlich mal sequenzen einführen.  und auch wenn das schräg aussieht, ich bin sogar geneigt das mit dem id2 AS (id) für das erste zu übernehmen. es mögen die gleichen inhalte sein, aber da kann ich nur meinen bewährten daten-design merksatz entgegen halten,was gleich aussieht,muss nicht das selbe sein....

auf jeden fall erst mal danke für die anregungen, vielleicht kommen ja noch welche hinzu.

Ilja