Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Wyzwalacz na insert hasła do bazy
Forum PHP.pl > Forum > Przedszkole
newmala
próbuję zrobić triggera na zapis do bazy:
  1. TRIGGER `zapis_haslo`
  2. AFTER INSERT ON ``klient`
  3. FOR EACH ROW
  4. UPDATE klient SET
  5. password = md5(password)
  6. Where id_klienta IN (SELECT id_klienta from inserted)


Taki kod się wykonuje, ale przy próbie zapisu do tabeli klienta dostaje info, że tabela inserted nie istnieje.
Czy MySql jest w ogóle coś takiego takiego tabela inserted, wiem , że MSSQL tak.

Generalnie chodzi o trzymanie w bazie haseł zahaszowanych funkcją md5.
Czy podejście z triggerem jest dobre?
Czy może w MySql należy to jakoś inaczej zrobić?

cycofiasz
Po co trigger skoro można bezpośrednio w insercie dać md5 ?
toaspzoo
Where id_klienta IN (SELECT id_klienta from inserted)

daj

  1. WHERE id_klienta IN (SELECT id_klienta FROM `inserted`)
Crozin
Pomijając fakt, że MD5 jest tutaj nic nie warte, to takie coś powinno być robione po stronie aplikacji, nie bazy danych - niepotrzebnie hasło w formie jawnej musi wędrować pomiędzy aplikacją a bazą, zwiększając liczbę miejsc z których może zostać przechwycone.
newmala
Ok, co do poprawy inserted na `inserted` nie pomogło, dalej przy wstawianiu insert do bazy pluje się, że tej bazie nie ma tabeli inserted.
Pewnie ta tabelka jest przechowywana w innym schemacie, bazie, może wiecie gdzie jej szukać?

Co do tego, że można by zrobić to po stronie aplikacji to oczywiście się zgodzę i pewnie tak zrobię, dzięki za sugestię.

Od razu pytanko odnośnie wstawiania danych :
ustawiłam pesel jako INT(11) i próbuję wstawić dokładnie numer pesel składający się z 11 cyfr, a SQL krzyczy, że OUT of range, w czym jest problem, wie może ktoś?
nospor
Ale co ci strzeliło do głowy, by w ogóle latać do jakiejś tabeli INSERTED? Chcesz pobrać ID aktualnie przetwarzanego klienta? No to przecież tę informację udziela trigger - zapraszam do manuala bo jest to tam bardzo dokładnie wyjaśnione.
newmala
Jak możesz trochę jaśniej to napisz kilka słów o tym.

I co z tym peselem INT(11) dlaczego nie przyjmuje numeru o 11 cyfrach?
nospor
Kilka słów o tym? No dobra:

manual to jest takie coś, gdzie znajdują się informację o danej rzeczy którą używasz - któtko rzecz mówiąc jest to dokumentacja z kupą przykładów. Manual dla mysql znajduje się pod adresem:
http://dev.mysql.com/doc/

zas infor o TRIGGERACH tu:
http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html

Cytat
I co z tym peselem INT(11) dlaczego nie przyjmuje numeru o 11 cyfrach?

yyy, bo INT 11 nie oznacza ile przyjmie cyfr. To też jest wyjaśnione w manualu
http://nospor.pl/int11-kontra-int.html

Do przechowywania pesel użyj CHAR
newmala
Ok, rozumiem, że forum jest po to aby udawadniać ludziom, że nie umieją czytać manuala.
Więc ja przyznaję się nie zbyt wiele z tego rozumiem stąd zadaje pytania.
Gdzie znajdę dane w MySQL przy próbie zapisu do danych do bazy, bo przecież muszą być wstępnie przechowane, zanim zostaną zapisane?


Może wiesz dlaczego wstawiając do pola INT(11) liczbę 11 cyfrową dosteję Warning - OUT OF RANGE?

nospor
Cytat
Ok, rozumiem, że forum jest po to aby udawadniać ludziom, że nie umieją czytać manuala.
Słuchaj, wspomniałem o manualu, a ty po 3 minutach piszesz kolejnego posta. odliczajac czas na przeczytanie posta, napisanie odpowiedzi, pozostaje raptem minuta na to, by cokolwiek w tym manualu przeczytać. WNiosek: nie zagladales w ogole.

Cytat
Gdzie znajdę dane w MySQL przy próbie zapisu do danych do bazy, bo przecież muszą być wstępnie przechowane, zanim zostaną zapisane?
I ci to wyjasniłem - trigger udostępnia te informacje.
Cytat z manuala do ktorego ci odeslalem:

Cytat
You can refer to columns in the subject table (the table associated with the trigger) by using the aliases OLD and NEW. OLD.col_name refers to a column of an existing row before it is updated or deleted. NEW.col_name refers to the column of a new row to be inserted or an existing row after it is updated.


Cytat
Może wiesz dlaczego wstawiając do pola INT(11) liczbę 11 cyfrową dosteję Warning - OUT OF RANGE?
Ty w ogole czytasz co sie do ciebie pisze? Bo to, że do manuala nie zagladasz już wiemy.... przecież ci wyjasnilem, ze 11 nie oznacza zakresu liczby. Podalem ci linka do arta, który to dokladnie wyjaśnia.
toaspzoo
do zrób
nazwa_bazy.tabela

zamiast

samej nazwy tabeli
nospor
@toaspzoo przestan już... nie ma takiej tabeli jak INSERTED.... twoje "magia" nic na to nie poradzi.
newmala
Ok, dzięki Kubusiu za naukę.
Postaram się więcej czytać.

Niektórym niestety rzeczy przychodzą z trudnością i dlatego poszukuję tych odpowiedzi na forum - przedszkole.


nospor
Cytat
Niektórym niestety rzeczy przychodzą z trudnością i dlatego poszukuję tych odpowiedzi na forum - przedszkole.
A niektórzy wymagają jedynie, by ci, którym starają się pomóc czytali to co się do nich pisze, a nie co minute bez namysłu strzelali postami.

Napisałem ci po polsku o co chodzi z tym 11, podałem ci linka do arta, który to wyjaśniał (też po polsku), a ty nadal sie pytasz czemu dostajesz błąd. Niezależnie czy to przedszkole czy nie - wymagamy by czytano co sie do kogoś pisze. Poziom wiedzy nie jest akurat w tej kwesti żadnym wytłumaczeniem
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.