Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL]Wyzwalacz na insert hasła do bazy, zapisanie hasła do bazy
newmala
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 17.01.2012

Ostrzeżenie: (0%)
-----


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ć?

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
cycofiasz
post
Post #2





Grupa: Zarejestrowani
Postów: 711
Pomógł: 127
Dołączył: 5.07.2008
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Po co trigger skoro można bezpośrednio w insercie dać md5 ?
Go to the top of the page
+Quote Post
toaspzoo
post
Post #3





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


Where id_klienta IN (SELECT id_klienta from inserted)

daj

  1. WHERE id_klienta IN (SELECT id_klienta FROM `inserted`)
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
newmala
post
Post #5





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 17.01.2012

Ostrzeżenie: (0%)
-----


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ś?


Ten post edytował newmala 8.02.2012, 14:47:30
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
newmala
post
Post #7





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 17.01.2012

Ostrzeżenie: (0%)
-----


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?

Ten post edytował newmala 8.02.2012, 14:51:48
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
newmala
post
Post #9





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 17.01.2012

Ostrzeżenie: (0%)
-----


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?

Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
toaspzoo
post
Post #11





Grupa: Zarejestrowani
Postów: 778
Pomógł: 84
Dołączył: 29.07.2010
Skąd: Gliwice / Pławniowice Mistrz niezmordowanej klawiatury.

Ostrzeżenie: (20%)
X----


do zrób
nazwa_bazy.tabela

zamiast

samej nazwy tabeli
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




@toaspzoo przestan już... nie ma takiej tabeli jak INSERTED.... twoje "magia" nic na to nie poradzi.
Go to the top of the page
+Quote Post
newmala
post
Post #13





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 17.01.2012

Ostrzeżenie: (0%)
-----


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.


Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 25.09.2025 - 17:47