begin process at 2008 05 12 06:41:11
1 170 149 membres
53 nouveaux aujourd'hui
13 956 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

VALIDATION DU FORMAT DU N° DE TÉLÉPHONE AVEC TSQL


Information sur la source

Description

cette source est un trigger réalisé avec T-sql de sql server 2000
le trigger permet de valider le format d'un numéro de téléphone avant sa sauvegarde dans la bd.
il est donc déclencher si le numéro contient des caractères autre que '0..9' et '.'
crée une table T_client ds une bd sous  "ms sql server"; qui contiendera un champ cli_tel.
facile à comprendre ;)

Source

  • create TRIGGER VerifyPhone
  • on T_client
  • instead of insert,update
  • as
  • begin
  • declare @i smallint,@b smallint,@tel varchar(20)
  • set @tel=(select cli_tel from INSERTED)
  • select @b=1
  • select @i=1
  • while @i<=len(@tel) and @b=1
  • begin
  • if (ascii(substring(@tel,@i,1))<48 or ascii(substring(@tel,@i,1))>57) and (ascii(substring(@tel,@i,1))<>46)
  • select @b=0
  • select @i=@i+1
  • end
  • if @b=0
  • begin
  • ROLLBACK TRANSACTION
  • print 'Transaction annulée'
  • print 'numéro de téléphone Invalide'
  • end
  • else
  • begin
  • if update(cli_tel)
  • delete T_client where cli_id=(select cli_id from deleted)
  • insert T_client select * from INSERTED
  • end
  • end
create TRIGGER VerifyPhone
on T_client
instead of insert,update
   as 
    begin
           declare @i smallint,@b smallint,@tel varchar(20) 
           set @tel=(select cli_tel from INSERTED)    
  
           select @b=1
           select @i=1
           while @i<=len(@tel) and @b=1
              begin
                if (ascii(substring(@tel,@i,1))<48 or ascii(substring(@tel,@i,1))>57) and (ascii(substring(@tel,@i,1))<>46)                   
                 	select @b=0
                 select @i=@i+1
              end
           if @b=0
               begin
                 ROLLBACK TRANSACTION
                 print 'Transaction annulée'
                 print 'numéro de téléphone Invalide'
               end
           else
               begin
                  if update(cli_tel)
                     delete T_client where cli_id=(select cli_id from deleted)
                  insert T_client select * from INSERTED
               end      
end

Conclusion

toute amélioartion est souhaitable.
bon codage
  • signaler à un administrateur
    Commentaire de skweeky le 06/04/2007 20:27:31 administrateur CS

    Perso j'éviterais le trigger INSTEAD OF, acr il y a en un seul de chauqe type, et du coup c'est plus compliqué à mettre en place...
    Le type AFTER serait parfait pour çà.
    Deuxièmement un CHECK avec une fonction réalisant la même chose serait mieux (le CHECK vérifiant les valeurs avant insertion).
    Dernier point le  
               select @b=1
               select @i=1
    Se simplifie en
               select @b=1, @i=1
    Sinon bonne idée.

  • signaler à un administrateur
    Commentaire de bad_smi le 06/04/2007 20:37:31

    merci SKWEEKY pour tes apréciations.
    en ce qui concerne le check j'essayerai de le mettre en place.ça fera moins de code ;)
    a+

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS