Trigger - Prepared Statemet – MySQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Trigger - Prepared Statemet – MySQL – Fórum – Programujte.comTrigger - Prepared Statemet – MySQL – Fórum – Programujte.com

 

Dejv
~ Anonymní uživatel
27 příspěvků
29. 9. 2013   #1
-
0
-

Zdravím. Potřebuji vytvořit trigger ve kterém se bude vkládat řádek do již existující tabulky. Název tabulky se vytáhne z jiné tabulky. viz kód:

delimiter //
create trigger adding after INSERT on main FOR EACH ROW
BEGIN
   DECLARE mesic INT;
   DECLARE rok INT;
   DECLARE tabulka varchar(8);
   SELECT YEAR(Added) INTO rok from main WHERE ID = NEW.ID;
   SELECT MONTH(Added) INTO mesic FROM main WHERE ID = NEW.ID;
   SET tabulka = CONCAT(mesic, rok, 'Alfa');
   set @s = CONCAT('INSERT INTO ',tabulka, ' SET ID = ', NEW.ID,);
   prepare statement from @s;
   execute statement;
   deallocate prepare statement;       
END;//
delimiter ;

Již jsem zjistil že v triggerech nejde používat prepare statement... Jde to nějak obejít ?

Díky.

Nahlásit jako SPAM
IP: 89.102.145.–
Kit+15
Guru
29. 9. 2013   #2
-
0
-

#1 Dejv
Nejlépe to obejdeš tak, že nebudeš vymýšlet ptákoviny a cílovou tabulku budeš mít jednu. SQL dotaz se tím krásně zjednoduší:

 INSERT INTO Alfa (ID, Added) VALUES (NEW.ID, NEW.Added);

Jak tak na to ale koukám, tak je to jeden velký nesmysl, protože všechno už máš v té primární tabulce. Celý trigger je tedy zcela zbytečný.

Nahlásit jako SPAM
IP: 46.174.34.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 17 hostů

Podobná vlákna

Prepared statements — založil Stormy Weather

MySQLi a prepared statements — založil Kuboslav

Trigger — založil RePRO

Trigger nad více tabulkama — založil Honza

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý