DROP TRIGGER IF EXISTS `java`.`newIdDisc`//
CREATE TRIGGER `java`.`newIdDisc` BEFORE INSERT ON `java`.`disc`
FOR EACH ROW BEGIN
DECLARE id INTEGER;
SELECT MAX(id) INTO id FROM (SELECT * FROM ( SELECT MAX(id) AS id FROM `disc`) AS DerivedDisc
UNION
SELECT * FROM ( SELECT MAX(id) AS id FROM `book`) AS DerivedBook
) AS Main;
SET NEW.id = id + 1;
END
//
malo by to robit to ze mam dve tabulky book a disc a chcem spravit to aby mal jednotne id teda aby to islo postupne ze napr. kniha 1 2 disc 3 4 kniha 5 disc 6 7 ako ID bude spolocne narastat v oboch. niekde mam syntakticku chybu
DROP TRIGGER IF EXISTS `java`.`newIdDisc`//
CREATE TRIGGER `java`.`newIdDisc` BEFORE INSERT ON `java`.`disc`
FOR EACH ROW BEGIN
DECLARE newId INTEGER DEFAULT 0;
SELECT MAX(id) INTO newId FROM (SELECT id FROM ( SELECT MAX(id) AS id FROM `disc`) AS DerivedDisc
UNION
SELECT id FROM ( SELECT MAX(id) AS id FROM `book`) AS DerivedBook
) AS Main;
SET NEW.id = newId + 1;
END;
//
podla mna lepsie riesenie je pouzit dedicnost:
1. tab: spolocne prvky diskov, knih, .. (nazov, id, vydavatel, ... )
2. tab: specificke veci pre knihu
3. tab: specificke veci pre cd/dvd
vyhnes sa trigrom ktore su sialene pomale, bude to prehladnejsie a ma to mnozstvo dalsich vyhod...
uz sa stalo davnejsie len som chcel vediet ci sa mi podari spravit daky takyto trigger ako vo vacsine pripadov je to ale dost nanic pretoze ti malo kto trigger povoli fakt je lepsie to vymysliet tou dedicnostou