[ mozdasamjaamozdainisam @ 21.01.2013. 14:25 ] @
| Pozdrav,
Imam sledeci trigger, medjutim ne uspeva mi da dobijem zeljeni rezultat;
Code:
BEGIN
DECLARE mxRecordValue varchar(255);
SET @domainName = (SELECT name FROM domains WHERE id = NEW.id AND type='NS' LIMIT 1);
SET mxRecordValue = CONCAT('mail.',@domainName);
DELETE FROM records WHERE domain_id = NEW.domain_id AND type='MX';
DELETE FROM records WHERE domain_id = NEW.domain_id AND type='A' AND name=mxRecordValue;
INSERT INTO records (domain_id, name, type, content, ttl, prio) VALUES (NEW.domain_id, @domainName, 'MX', mxRecordValue, '86400', '10');
INSERT INTO records (domain_id, name, type, content, ttl) VALUE (NEW.domain_id, mxRecordValue, 'A', '85.92.140.135', '86400');
END
Cilj je da u jednom DELETE i dva INSERT query-ja koristim varijablu mxRecordValue koja bi trebalo da bude u formatu: 'mail.domen.com';
domen.com imam u @domainName, ali nikako da napravim da dobijem mail.@domainName :(
Please pomoc?! :) |
[ bogdan.kecman @ 21.01.2013. 14:39 ] @
a sta dobijes kao rezultat?
na prvi pogled deluje ok
[ mozdasamjaamozdainisam @ 21.01.2013. 15:43 ] @
Upisuje NULL u bazu u gornjem slucaju (a ocekujem mail.domen.com);
[ bogdan.kecman @ 21.01.2013. 23:26 ] @
to znaci da ti "@domainName" ima vrednost null (posto ce concat sa null uvek biti null
za pocetak promeni
SET mxRecordValue = CONCAT('mail.',@domainName);
u
SET mxRecordValue = CONCAT('mail.',COALESCE(@domainName, 'greska'));
i vidi da li ces da dobijes mail.greska sto ce potvrditi da ti je problem u selectu pre toga ..
onda dodaj jedan prazan
SELECT 'DEBUG---->', name, '<-----DEBUG', NEW.id FROM domains WHERE id = NEW.id AND type='NS' LIMIT 1;
i cimni ga kroz mysql cli taj select bi trebalo da izadje na stdout vidi sta ces da dobijes
[ mozdasamjaamozdainisam @ 22.01.2013. 10:58 ] @
Bogdane,
Hvala puno na pomoci, upravno naznaka da imam null negde mi je pomogla da pronadjem gresku (SELECT je imao gresku u sebi, hvatao pogresno polje).
Sada sve radi - a usput sam naucio in novu komandu COALESCE :)
Ako ti nije problem (ovo nije toliko hitno, kad budes imao vremena):
nije mi najjasniji ovaj deo:
"SELECT 'DEBUG---->', name, '<-----DEBUG', NEW.id FROM domains WHERE id = NEW.id AND type='NS' LIMIT 1;
i cimni ga kroz mysql cli taj select bi trebalo da izadje na stdout vidi sta ces da dobijes"
Ovo mislis da ubacim u (nov, prazan) trigger sa istim parametrima (AFTER INSERT)?
A zatim da preko CLI-a izvrsim jedan insert i da vidim sta cu dobiti?
Samo mi potvrdi da li sam ovo dobro razumeo jer verujem da ce mi pomoci u debagovanju i za ubuduce.
Jos jednom hvala puno!
[ bogdan.kecman @ 22.01.2013. 11:18 ] @
dobro si razumeo (nema potrebe to sada da radis posto si resio problem)
ako imas trigger, storred proceduru etc etc ... i usred uradis npr
SELECT "stigao sam dovde";
ako izvrsis upit koji cima tu sp ili trigger trebalo bi u konzoli da vidis "stigao sam dovde" ..
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.