Hello,
Je viens vous voir car je cherche une solution de contournement pour un problème qui n'en serait pas un si notre maison-mère consentait à migrer à la version suivante de sql server...
Bref, dans une nouvelle DB, j'aurais bien voulu créer la table suivante :
Évidemment, pas moyen vu qu'on ne peut avoir qu'une seule colonne IDENTITY par table (sinon, @@IDENTITY serait bien emmerdé pour nous retourner quelque chose ^^).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE S_GM.T_CARD_CRD ( CRD_ID INT IDENTITY(1,1) NOT NULL, EMP_ID INT NOT NULL, CRD_NUMBER INT IDENTITY(1,1) NOT NULL, CRD_LOCKED BIT NOT NULL DEFAULT CAST(0 AS BIT), CONSTRAINT PK_T_CARD_CRD PRIMARY KEY CLUSTERED ( CRD_ID ) WITH (FILLFACTOR = 80) ); GO
Avec 2012+, il y a les séquences pour me dépanner. Mais ça n'existe pas encore chez moi (la migration est prévue cependant... faut juste que je trouve le temps de la faire...)
Quelqu'un aurait-il une idée lumineuse pour contourner cette limitation "proprement" ?
J'ai bien pensé à faire ceci mais j'ai l'impression que ça fait bricolage...
Je pourrais aussi utiliser la colonne CRD_NUMBER comme clef primaire et carrément retirer la colonne CRD_ID mais je ne respecterais alors plus le principe de Tabourier (vous allez me dire, c'est un principe, pas une règle absolue...).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 CREATE TABLE S_GM.T_CARD_CRD ( CRD_ID INT IDENTITY(1,1) NOT NULL, EMP_ID INT NOT NULL, CRD_LOCKED BIT NOT NULL DEFAULT CAST(0 AS BIT), CONSTRAINT PK_T_CARD_CRD PRIMARY KEY CLUSTERED ( CRD_ID ) WITH (FILLFACTOR = 80) ); GO CREATE TABLE S_GM.T_CARD_NUMBER_CRN( CRD_ID INT NOT NULL REFERENCES S_GM.T_CARD_CRD(CRD_ID), CRD_NUMBER INT IDENTITY(1,1) NOT NULL, CONSTRAINT PK_T_CARD_NUMBER_CRN PRIMARY KEY CLUSTERED( CRD_ID ) WITH (FILLFACTOR = 80) ); GO
Bref, quelle est la meilleure solution selon vous ? (ceux qui me diront de migrer vers une version 2012+ auront raison mais il me faut du temps )
Partager