autoincrementation

autoincrementation - SQL/NoSQL - Programmation

Marsh Posté le 07-06-2007 à 15:42:33    

Bonjour à tous
 
Voila j'ai une table avec un numero d'affaire en auto_incremet dans dans la table il m'affiche :
1
2
3
4
Mais est il possible de donner un autre forme au 1, 2 , 3 comme par exemple :
2007/001
2007/002
2007/003
 
Voila je vous remercie d'avance

Reply

Marsh Posté le 07-06-2007 à 15:42:33   

Reply

Marsh Posté le 07-06-2007 à 15:53:39    

non, les autot increment sont des entiers  
 
a toi de perosnnaliser lros de l'affichage

Reply

Marsh Posté le 08-06-2007 à 10:38:42    

Tu fais 2 colonnes, une "année" et une "id" (en auto_increment), avec une pk sur le couple "année", "id". Et si tu as MySQL, à priori tu peux réinitialiser l'autoincrement tous les ans avec un ALTER TABLE latable AUTO_INCREMENT=0 (je sais pas si c'est une bonne idée, j'ai jamais testé)


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 11-06-2007 à 11:01:03    

le mieux c'est de passer par une séquence et allimenter l'id par un trigger qui va taper dans la séquence et faire la mise en forme.
seul truc, les séquences ne sont pas supportées sur tous les sgbd...
 
tu vas donc travailler avec une table "compteur" qui va être incrémentée par le trigger en question...
 
create trigger tbl_ins  
on tbl
instead of insert
as
begin
  declare @cpt numeric;
  declare @year char(4);
  select @cpt = cpt + 1, @year = year from cpttbl with (rowlock) where year = year(getdate());
  update cpttbl set cpt = @cpt where year = @year;
  insert into tbl (id, field1, field2, etc.) values (year + '/' + right('000' + cast(@cpt as varchar(3)), 3), inserted.field1, inserted.field2, inserted.etc.);
end;
 
(en gros)


Message édité par MagicBuzz le 11-06-2007 à 11:03:34
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed