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