Download presentation
Presentation is loading. Please wait.
Published byLeiv Ervik Modified over 6 years ago
1
Zadatak 2. a) Kreirajmo tabelu TRANSAKCIJE koja će pamtiti sve transakcije obavljene na računima korisnika CREATE TABLE `test`.`transakcije` ( `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, `ovome_oduzmi` INTEGER UNSIGNED, `ovome_dodaj` INTEGER UNSIGNED, `iznos` DOUBLE(10,2), `opis_transakcije` VARCHAR(255), PRIMARY KEY(`id`), CONSTRAINT `FK_transakcije_oduzmi` FOREIGN KEY `FK_transakcije_oduzmi` (`ovome_oduzmi`) REFERENCES `korisnici` (`id`) ON DELETE SET NULL, CONSTRAINT `FK_transakcije_dodaj` FOREIGN KEY `FK_transakcije_dodaj` (`ovome_dodaj`) ON DELETE SET NULL ) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci COMMENT = 'Lookup tabela sa transakcijama'; b) Kreirati proceduru kojom se vrši prebacivanje novca sa računa jednog korisnika na račun drugog korisnika.
2
END $$ DELIMITER ; DELIMITER $$
DROP PROCEDURE IF EXISTS `test`.`obavi_transakciju` $$ -- ako ima, onda obavi transakciju: IF v_trenutno_stanje > p_iznos THEN UPDATE korisnici CREATE PROCEDURE `test`.`obavi_transakciju`( SET iznos = iznos - p_iznos IN p_oduzmi_id INT, IN p_dodaj_id INT, IN p_iznos DOUBLE, IN p_opis VARCHAR(255), SET iznos = iznos + p_iznos OUT p_poruka VARCHAR(255)) WHERE id = p_dodaj_id; BEGIN -- sacuvaj informacije o obavljenoj transakciji: DECLARE v_trenutno_stanje DOUBLE(10, 2) DEFAULT 0; INSERT INTO transakcije (id, ovome_oduzmi, ovome_dodaj, iznos, opis_transakcije) VALUES (NULL, p_oduzmi_id, p_dodaj_id, p_iznos, p_opis); DECLARE exit HANDLER FOR NOT FOUND ELSE SET p_poruka = 'Korisnik nema dovoljno novca'; SET p_poruka = 'Korisnik nije pronadjen!'; END IF; DECLARE exit HANDLER FOR SQLEXCEPTION -- potvrdi unos i oznaci kraj transakcije ROLLBACK; -- ili ponisti unos SET p_poruka = 'Greska'; IF p_poruka != '' THEN END; -- oznaci pocetak transakcije COMMIT; START TRANSACTION; SET p_poruka = 'SUCCESS! Transakcija je uspesno obavljena'; -- proveri da li korisnik, kom se skida sa racuna, postoji i da li -- ima dovoljno novca da mu se zadani iznos moze skinuti: SELECT p_poruka; SELECT iznos END $$ INTO v_trenutno_stanje DELIMITER ; FROM korisnici WHERE id = p_oduzmi_id;
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.