Autor | Zpráva | ||
---|---|---|---|
kuzb Profil * |
#1 · Zasláno: 11. 8. 2015, 17:17:43
Dobrý den, chci do databáze ukládat ip adresu jako int. Potřeboval bych trigger který by ip převedl na int. Mám zatím toto a nefunguje to:
create TRIGGER trLog BEFORE INSERT on log FOR EACH ROW BEGIN set new.ip = INET_ATON(new.ip); INSERT INTO log(idUser, ip)VALUES(new.idUser, @ip); end; děkuji za radu |
||
juriad Profil |
#2 · Zasláno: 11. 8. 2015, 17:48:34
Teoreticky by mohlo fungovat toto, ale v praxi to nefunguje, protože mysql kontroluje datové typy ještě před provedením triggeru.
Viz sqlfiddle.com/#!9/85ab0/1 (nepovolí, aby se do insertu dostal řetězec a hlásí tructated). create TRIGGER trLog BEFORE INSERT on log FOR EACH ROW BEGIN SET new.ip = INET_ATON(new.ip); END |
||
kuzb Profil * |
#3 · Zasláno: 11. 8. 2015, 18:36:05
aha to je docela divný chování. takže jak se to dá řešit?
|
||
juriad Profil |
#4 · Zasláno: 11. 8. 2015, 18:49:05
kuzb:
Provést konverzi už v PHP (před sestavením databázového dotazu). Nebo si napsat v databázi STORED PROCEDURE a tu volat. Silně doporučuji první možnost. |
||
Časová prodleva: 9 let
|
0