OVH Cloud OVH Cloud

champ auto qui se réinitialise

3 réponses
Avatar
MOD
Bonjour
J'ai une table qui contient un champ numérique qui s'autoincrémente.
J'aimerai que chaque premier janvier que le champ se réinitialiser. Comment
peut faire cela?

Merci d'avance

--

=================================
MOD
modiop@hotmail.com
http://modiop.ifrance.com
=================================

3 réponses

Avatar
bruno reiter [MVP]
en utilisant un job qui fera un DBCC CHECKIDENT reseed, mais attention aux
doublons

br





"MOD" wrote in message
news:
Bonjour
J'ai une table qui contient un champ numérique qui s'autoincrémente.
J'aimerai que chaque premier janvier que le champ se réinitialiser. Comment
peut faire cela?

Merci d'avance

--

================================ > MOD

http://modiop.ifrance.com
================================ >



Avatar
MOD
Oui pour les doublons je pensais à mettre l'année devant par exemple
200300001, 200300002 etc.

"bruno reiter [MVP]" a écrit dans le message
de news:

en utilisant un job qui fera un DBCC CHECKIDENT reseed, mais attention aux
doublons

br





"MOD" wrote in message
news:
> Bonjour
> J'ai une table qui contient un champ numérique qui s'autoincrémente.
> J'aimerai que chaque premier janvier que le champ se réinitialiser.


Comment
> peut faire cela?
>
> Merci d'avance
>
> --
>
> ================================ > > MOD
>
> http://modiop.ifrance.com
> ================================ > >
>




Avatar
Fred BROUARD
C'est la pire des choses à faire...

Quelques principes de base des SGBDR

1) Ne jamais mélanger les données dans une seule et même colonne....
et la c'est un mélange de l'année + un numéro.

2) si tu as 100000 commandes tu passera à l'année suivante...
Bien sûr tu n'auras jamais 100000 commandes... promis juré... et si la
boite en rachetais une autres et que l'on repasse toutes les commandes
de l'autres dans ta compta ???

3) c'est de l'info redondante si tu stocke la date !

la solution : calculer cette colonne d'après l'incrément vrai et l'année
de la date.
Du style :

SELECT CAST(DATEPART(YEAR, ColonneDate) AS CHAR(4))
+ id - (SELECT MIN(id)
FROM MaTable
WHERE DATEPART(YEAR, ColonneDate) DATEPART(T.YEAR, ColonneDate)) + 1 AS Code
FROM Matable T


Le tout pouvant être simplifié dans une fonction !

A +


--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************

MOD a écrit:
Oui pour les doublons je pensais à mettre l'année devant par exemple
200300001, 200300002 etc.

"bruno reiter [MVP]" a écrit dans le message
de news:

en utilisant un job qui fera un DBCC CHECKIDENT reseed, mais attention aux
doublons

br





"MOD" wrote in message
news:

Bonjour
J'ai une table qui contient un champ numérique qui s'autoincrémente.
J'aimerai que chaque premier janvier que le champ se réinitialiser.





Comment

peut faire cela?

Merci d'avance

--

================================ >>>MOD

http://modiop.ifrance.com
================================ >>>