• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Ograniczenia w SQL

Object Storage Arubacloud
0 głosów
408 wizyt
pytanie zadane 16 kwietnia 2020 w SQL, bazy danych przez XavRock Obywatel (1,390 p.)

Witam mam kłopot z dodaniem ograniczenia na numer telefonu. Mają być dwie możliwości dodania numeru telefonu

123456789 lub +48123456789.

Mój kod wygląda następująco:


ALTER TABLE uzytkownicy ADD CONSTRAINT telefon
CHECK (telefon_kontaktowy LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' OR telefon_kontaktowy LIKE '[+][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]');

 

komentarz 16 kwietnia 2020 przez tangarr Mędrzec (154,860 p.)
Jaka baza danych?
2
komentarz 16 kwietnia 2020 przez Tomek Sochacki Ekspert (227,510 p.)
a dlaczego takie rzeczy chcesz robić w bazie? Szczerze to nie widzę za bardzo sensu aby to wrzucać do bazy, takie walidacje lepiej trzymać w aplikacji, a bazę traktować tylko jako zbiór danych, bez żadnych dodatkowych operacji.
komentarz 16 kwietnia 2020 przez Ehlert Ekspert (212,790 p.)

a dlaczego takie rzeczy chcesz robić w bazie? Szczerze to nie widzę za bardzo sensu aby to wrzucać do bazy, takie walidacje lepiej trzymać w aplikacji, a bazę traktować tylko jako zbiór danych, bez żadnych dodatkowych operacji.

Polać temu Panu!

komentarz 17 kwietnia 2020 przez XavRock Obywatel (1,390 p.)
Taka jest treść zadania. Więc muszę tak zrobić.

1 odpowiedź

0 głosów
odpowiedź 17 kwietnia 2020 przez DeBos123 Nałogowiec (44,950 p.)
wybrane 18 kwietnia 2020 przez XavRock
 
Najlepsza

Moim zdaniem będzie Ci łatwiej zrobić walidacje w aplikacji (tak jak napisał @Tomek Sochacki w komentarzu). Wtedy mógłbyś zastosować taki regex: ^(\+48)?\d{9}$

1
komentarz 17 kwietnia 2020 przez Tomek Sochacki Ekspert (227,510 p.)

walidacja w aplikacji ma wiele zalet:

  • większe możliwości walidacyjne, możliwość łatwego stworzenia uniwersalnych walidatorów reużywalnych itp.
  • możliwość ustawienia paramwetrów walidacji w jakieś wspólnej konfiguracji przez co jakieś zmiany są szybkie i wymagają tylko wdrożenia czy restartu apki
  • przy większej apce można wydzielić walidatory do osobnej usługi przez co w razie potrzeby robisz restart tylko jednej usługi, a nie całej apki
  • można łatwo zapiąć różnego rodzaju monitoring aby analizować w razie czego co poszło nie tak itp.
  • jeśli o bazie będziesz myślał jak o samym zbiorze wartości to w razie czego łatwiej przejść na inną bazę czy robić skalowanie
  • itp. itd.

Parę razy nawet uczestniczyłem w dyskusjach na ten temat m.in. z samymi bazo-danowcami i oni również uważają, że takie rzeczy powinno się robić w aplikacji. Ponad do często słyszę ostatnio opinie, aby do minimum ograniczać też np. funkcje czy procedury na samych bazach również na rzecz jakiś apek, cron/airflow itp.

Taka jest treść zadania. Więc muszę tak zrobić.

i to jest najlepsze w polskim szkolnictwie... :) Zapytaj wykładowcę w ilu apkach komercyjnych faktycznie robił takie rzeczy bezpośrednio na bazie :) Oczywiście żartuję... mimo, że studia skończyłem > 10 lat temu to pamiętam jeszcze niektóre durnoty wykładowców... ale wracając do tematu to skoro koniecznie musi być to w bazie i to z LIKE nie działa to może spróbuj z REGEXP_LIKE ? Nigdy nie robiłem regexp w bazie mysql, kiedyś trochę tylko w ramach zabawy i kojarzę taką funkcję, ona chyba zwracała zero lub jedynkę, zobacz w dokumentacji.

komentarz 17 kwietnia 2020 przez XavRock Obywatel (1,390 p.)
Niestety nie mogę tak. Wykładowca dał takie zadanie i muszę się go trzymać.

Podobne pytania

+1 głos
3 odpowiedzi 127 wizyt
pytanie zadane 13 marca w SQL, bazy danych przez Ppaat Nowicjusz (130 p.)
+2 głosów
1 odpowiedź 109 wizyt
0 głosów
1 odpowiedź 71 wizyt
pytanie zadane 15 lutego w SQL, bazy danych przez pa_ka Nowicjusz (120 p.)

92,619 zapytań

141,468 odpowiedzi

319,789 komentarzy

62,001 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...