Sanırım telefon numarası diye bir özniteliğim var ve bu alana girişlerde belirli bir geçerlilik sağlamak istiyorum. Düzenli İfade, kısıtlamaları tanımlamada çok esnek olduğundan, bu amaçla düzenli ifade kullanabilir miyim?MySQL'de Veri Denetimi'ni Düzenli İfade Kullanarak Uygulamak Mümkün mü
cevap
Evet, yapabilirsiniz. MySQL regex'i (http://dev.mysql.com/doc/refman/5.6/en/regexp.html) destekler ve veri doğrulama için MySQL CHECK kısıtlamasını desteklemediğinden bir tetikleyici kullanmalısınız (her zaman PostgreSQL'e alternatif olarak taşıyabilirsiniz :). NB! MySQL'in CHECK kısıtlama yapısına sahip olmasına rağmen, maalesef MySQL'in (şimdiye kadar 5.6) veriyi kontrol kısıtlamalarına karşı doğrulamadığı bilinmelidir. http://dev.mysql.com/doc/refman/5.6/en/create-table.html'a göre: "CHECK deyimi tüm depolama motorları tarafından çözümlenir ancak yok sayılır."
Bir sütun telefonu için denetim kısıtlamasını ekleyebilirsiniz:
CREATE TABLE data (
phone varchar(100)
);
DELIMITER $$
CREATE TRIGGER trig_phone_check BEFORE INSERT ON data
FOR EACH ROW
BEGIN
IF (NEW.phone REGEXP '^(\\+?[0-9]{1,4}-)?[0-9]{3,10}$') = 0 THEN
SIGNAL SQLSTATE '12345'
SET MESSAGE_TEXT = 'Wroooong!!!';
END IF;
END$$
DELIMITER ;
INSERT INTO data VALUES ('+64-221221442'); -- should be OK
INSERT INTO data VALUES ('+64-22122 WRONG 1442'); -- will fail with the error: #1644 - Wroooong!!!
veri doğrulama için MySQL (sizin durumunuzda veri katmanı) üzerine sadece güvenmemelisiniz Ancak. Veriler, uygulamanızın tüm düzeylerinde doğrulanmalıdır.
Teşekkürler. Bu aradığım bir şey. Tüm doğrulamaların tüm katmanlarda yapılması gerektiğini anlıyorum, ancak veri katmanı için nasıl yapıldığını bilmem gerekiyordu. –
- 1. C++ olayları uygulamak mümkün mü?
- 2. İfade Karışımı'nda Silverlight Toolkit denetimini kullanarak XamlParseException
- 3. düzenli ifade
- 4. 'two' İki düzenli ifade arasındaki düzenli ifade
- 5. CDN kullanarak sadece bir div için bootstrap uygulamak mümkün mü?
- 6. "Beni Hatırla" jquery çerezlerini kullanarak uygulamak mümkün mü?
- 7. Sadece LISP ilkelerini kullanarak koroutinleri uygulamak mümkün mü?
- 8. JavaScript düzenli ifade
- 9. pdfquery ile düzenli ifadeler kullanmak mümkün mü?
- 10. NSArray sınıfına filtre uygulamak mümkün mü?
- 11. Kutu gölgesine degrade uygulamak mümkün mü?
- 12. Windows Phone 7 ping uygulamak mümkün mü?
- 13. İfade Dili'nde tarih değeri oluşturmak mümkün mü?
- 14. Ayrıştırma JavaScript düzenli ifade antlr
- 15. JFormattedTextField düzenli bir ifade biçimlendirici kullanarak mı?
- 16. Düzenli ifade hata mesajı
- 17. Bir kontrol kısıtlaması ifade etmek mümkün mü?
- 18. Belirli bir düzenli ifade dışında her şeyle eşleşen düzenli ifade
- 19. Düzenli İfade Minimum Uzunluğu
- 20. Önek düzenli ifade nedir?
- 21. Düzenli ifade .net
- 22. Javascript Düzenli ifade
- 23. zaman için düzenli ifade
- 24. Özellikle java düzenli ifade
- 25. Dizin işlevinde düzenli ifade
- 26. düzenli ifade bağlantıları
- 27. Python String.Replace düzenli ifade
- 28. Düzenli ifade NIC
- 29. düzenli ifade \ Z (? Ms)
- 30. Örtüşen düzenli ifade
Kısa cevap: Evet yapabilirsiniz. Daha fazla içerik ekleyebilir misiniz? Girişi filtrelemek ister misiniz? Eğer öyleyse, kullanıcı örneğin ne zaman kayıt yaptığında filtrelemiyorsunuz? – HamZa
@HamZaDzCyberDeV Hayır, girişte değil. Bunu veritabanında uygulamak istiyorum. Uygulama katmanında yapılabileceğini anlıyorum, tablolar oluştururken veritabanı katmanında da aynı durumun mümkün olup olmadığını merak ediyordum. –
Bir tablo oluştururken, bir sütun türü belirtmeniz gerekir, "telefon numarası" türü yok. [Tetikleyiciler] 'e bakmak isteyebilirsiniz (http://dev.mysql.com/doc/refman/5.6/en/triggers.html) – HamZa