Autor Zpráva
kuzb
Profil *
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
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 *
aha to je docela divný chování. takže jak se to dá řešit?
juriad
Profil
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.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: