Gültigkeitsprüfung einer Telefonnummer mittels T-SQL

Ja und hier kommt auch schon der erste Inhalt von dem ich gesprochen habe 😉 Durch meinen neuen Job, habe ich ständig mit dem MS SQL Server 2005 zu tun. Und da ich zur Zeit viel mit ihm rumspiele zu Lernzwecken etc., programmiere ich verschiedene Stored Procedures, Trigger, Views etc. um mich darin einzuarbeiten. Dabei hab ich mir überlegt, wie es möglich wäre eine Telefonnummer auf ihre Gültigkeit vor dem Speichern in eine Datenbank zu überprüfen. Dabei sollen nur Werte von 0-9 und die Zeichen "-" und "/" erlaubt sein. Dabei bin ich auf folgende Lösung mittels Trigger gekommen, eventuell interessiert das ja jemanden 🙂

Erstellt euch als erstes eine Tabelle mit dem Namen "T_Telefon" und eine Spalte namens "TelNummer (varchar(20), null)". Nun erstellt euch anhand meines folgenden Codes einen Trigger:

  1.  
  2. CREATE TRIGGER [dbo].[PruefeNummer]
  3. ON [dbo].[T_Telefon]
  4. INSTEAD OF INSERT, UPDATE
  5. AS
  6. BEGIN
  7. DECLARE @anfang SMALLINT,@lenght SMALLINT, @tel VARCHAR(20)
  8. SET @tel=(SELECT TelNummer FROM INSERTED)
  9. SET @anfang=1
  10. SET @lenght=1
  11.  
  12. WHILE @anfang <= LEN(@tel) AND @lenght=1
  13.   BEGIN
  14. IF(ASCII(SUBSTRING(@tel,@anfang,@lenght)) < 48 OR
  15. ASCII(SUBSTRING(@tel,@anfang,1)) > 57) AND
  16. (ASCII(SUBSTRING(@tel,@anfang,1)) <> 46 AND
  17. (ASCII(SUBSTRING(@tel,@anfang,1)) <> 47))
  18.   SET @lenght=0
  19. SELECT @anfang=@anfang+1
  20. END
  21.  
  22. IF @lenght=0
  23. BEGIN
  24.   ROLLBACK TRANSACTION
  25.   PRINT 'Transaktion abgebrochen!'
  26. PRINT 'Telefonnummer enthält ungültige Zeichen!'
  27. END
  28. ELSE
  29. BEGIN
  30. IF UPDATE(TelNummer)
  31. DELETE T_Telefon WHERE TelID=(SELECT TelID FROM DELETED)
  32. INSERT T_Telefon SELECT * FROM INSERTED
  33. END
  34. END

Bei weiteren Fragen, einfach nen Kommentar darlassen 🙂

Einen Kommentar schreiben