[ 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" ..