Autor Zpráva
fibi
Profil *
Snažím se napsat si trigger který potřebuje sestavit z různých dat název sloupce a jeho hodnotu potom použít v selectu.
A zaboha nemůžu přijít na syntaxi, respektive jestli to je vůbec možné.
Tedy zjednodušeně :

DECLARE var1 VARCHAR(50);
SET @var1= 'popis_cz';
SELECT @var1 FROM tabulka WHERE ID = 1; //toto mi vrací text 'var1' a ne obsah ve sloupci 'popis_cz'

Zkoušel jsem různě přidávat @, nebo `` a nic :-(

Celý trigger :
CREATE TRIGGER `apartmanyArchivAdd` BEFORE DELETE ON `bktour`.`apartmany_web`
FOR EACH ROW BEGIN
DECLARE bylo_id INT;
DECLARE jazyk VARCHAR(50);
SELECT Concat('C_druh.popis_', C_jazyk.kod) INTO @jazyk
FROM apartmany_web
JOIN apartmany ON apartmany.id = apartmany_web.id_apartman
JOIN C_web ON C_web.id = apartmany_web.id_web
JOIN C_jazyk ON C_jazyk.id = C_web.id_jazyk
WHERE apartmany_web.id_apartman = OLD.id_apartman AND apartmany_web.id_web = OLD.id_web;
SELECT id INTO bylo_id FROM apartmany_archiv WHERE id = OLD.id AND id_web = OLD.id_web ;
IF bylo_id IS NULL THEN
INSERT INTO `apartmany_archiv` (`id` , `id_web` , `pckod` , `nazev` , `id_lokalita` , `id_oblast` , `druh` , `create_time`)
SELECT OLD.id_apartman, OLD.id_web, apartmany.pckod, apartmany.nazev, apartmany.id_lokality, apartmany.id_oblasti, jazyk, NOW()
FROM apartmany
JOIN C_druh ON apartmany.id_druh = C_druh.id
WHERE apartmany.id = OLD.id_apartman ;
END IF;
END
TomášK
Profil
Pokud vím, tak to jde jedině pomocí prepared statements.
fibi
Profil *
TomášK:
Tak to by nebyla dobrá zpráva, protože to jsem teď zkoušel a MySQL napsala že to nelze použít uvnitř triggeru :-(

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:

0