SQL TRIGGER

Programovacie jazyky, rady, poradňa...
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

SQL TRIGGER

Príspevok od používateľa sINN3R »

Kód: Vybrať všetko

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

akosi sa nemozem dopatrat k chybe

solved:

Kód: Vybrať všetko

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;
//
michald
Light Expert
Light Expert
Príspevky: 51
Registrovaný: 05 aug 2005, 16:20
Kontaktovať používateľa:

Príspevok od používateľa michald »

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...
sINN3R
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 330
Registrovaný: 17 jún 2006, 11:21
Bydlisko: Trencin - Slovakia - EU
Kontaktovať používateľa:

Príspevok od používateľa sINN3R »

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
Napísať odpoveď