Je connais les champs IDENTITY mais j'ai l'impression que je ne pourrais pas en utiliser un pour résoudre mon problème.Comment dois-je procéder pour implémenter un champ "autonumber" dans SQL Server 2005?
Disons que j'ai plusieurs clients. Chaque client a plusieurs commandes. Chaque client doit avoir ses commandes numérotées de manière séquentielle, spécifique à lui.
structure de la table Exemple:
Orders:
OrderID | ClientID | ClientOrderID | etc...
Quelques exemples de lignes pour cette table serait:
OrderID | ClientID | ClientOrderID | etc...
1 | 1 | 1 | ...
2 | 1 | 2 | ...
3 | 2 | 1 | ...
4 | 3 | 1 | ...
5 | 1 | 3 | ...
6 | 2 | 2 | ...
Je connais le chemin naïve serait de prendre le MAX ClientOrderID pour tout client et utiliser cette valeur pour INSERT mais cela serait soumis à des problèmes de concurrence. J'envisageais d'utiliser une transaction, mais je ne suis pas sûr de la portée d'isolement la plus large qui puisse être utilisée pour cela. J'utiliserai LINQ to SQL mais j'ai le sentiment que ce n'est pas pertinent.
Alors, je dois demander ... POURQUOI voulez-vous faire cela? –
Cela ressemble à quelqu'un qui n'est pas habitué au stockage de données vous demande de le faire. Créer des dates est une façon plus naturelle de le faire. –
Je pourrais probablement juste attribuer un horodatage à chaque commande, puis faire un COUNT pour obtenir le numéro de commande pour le client. Cela ne devrait pas être un problème de performance car la table ne sera pas beaucoup plus grande que 1000 enregistrements. – llamaoo7