Presentation is loading. Please wait.

Presentation is loading. Please wait.

Stored Procedures, Triggers, Program Access Dr Lisa Ball 2008.

Similar presentations


Presentation on theme: "Stored Procedures, Triggers, Program Access Dr Lisa Ball 2008."— Presentation transcript:

1 Stored Procedures, Triggers, Program Access Dr Lisa Ball 2008

2 1. dev.mysql.com 2. www.mysqltutorial.org 3. www.digitalpropulsion.org 4. www.databasedesign-resource.com/ mysql-triggers.html

3 DELIMITER $$ -- set delimeter (allow ; inside) CREATE TRIGGER newsCounter AFTER INSERT ON News FOR EACH ROW BEGIN INSERT INTO NewsCount (newsItemCount) (SELECT count(*) FROM News); END; $$ DELIMITER ; -- reset delimeter

4 CREATE TABLE NewsCategories ( catID int not null auto_increment, catName varchar(32), primary key(catID)); CREATE TABLE News ( newsID int not null auto_increment, catID int not null, title varchar(32) not null, txt blob, primary key(newsID)); CREATE TABLE NewsCount ( newsItemCount int );

5 DELIMITER $$ CREATE TRIGGER newsCategoryHandler AFTER DELETE ON NewsCategories FOR EACH ROW BEGIN DELETE FROM News WHERE catID=OLD.catID; END; $$ DELIMETER ; -- Note: can reference NEW.attr on insert, update

6 DELIMITER $$ CREATE TRIGGER newsCounter AFTER INSERT ON News FOR EACH ROW BEGIN DELETE FROM NewsCount; INSERT INTO NewsCount (newsItemCount) (SELECT count(*) FROM News); END; $$

7  DROP TRIGGER newsCounter;  SHOW TRIGGERS;  One trigger per event, per table  Can add procedural elements, such as IF statements  See reference 4 (databasedesign- resource) for another example

8  Why go to the trouble of extracting logic from your application, putting it into a different format, and placing it on the database server? There are several advantages to doing so. Here is a (incomplete) list of some of the most commonly sited advantages:  MySQL stored procedures can greatly cut down on the amount of traffic going back and forth over your network. (usually FASTER in general than using app program)  Stored procedures can greatly improve the security of your database server. SQL that is executed on the server is not subject to SQL injection attacks.  Stored procedures provide a way to abstract and separate data access routines from the business logic of your application.  Stored procedures allow these routines to be accessed by programs using different platforms and API's, and make your applications more portable.  From source 4 (databasedesign-resource)

9  Block structured language similar to Oracle PL/SQL and IBM DB2 SQL  Some folks recommend using MySQL query browser to aid creation, but can be done from command line  Seeing what you have SHOW PROCEDURE STATUS; SHOW PROCEUDRE LIKE ‘%Test%’; SHOW CREATE PROCEDURE myproc;

10  Sample DB -- create News table, be sure to be in a 'test' DB CREATE TABLE News (NewsID int auto_increment not null, Title varchar(32), primary key(NewsID))

11 DELIMITER $$ DROP PROCEDURE IF EXISTS sprocTest $$ CREATE PROCEDURE sprocTest (id int, title varchar(32)) BEGIN -- INSERT NEW RECORD IF PREEXISTING RECORD DOESNT EXIST IF (id = 0) THEN SET id = null; END IF; IF (id IS NOT NULL) AND (EXISTS (SELECT * FROM News WHERE NewsID=id)) THEN UPDATE News SET Title=title WHERE NewsID=id; ELSE INSERT INTO News (Title) VALUES (title); END IF; END $$ DELIMITER ; To call: CALL sprocTest(1,'Some News Title'); -- this will update recordID 1

12  Using cursors Let’s us loop on each row returned from a query (the result set) see design-resources link (also on next slide)

13 stored procedure using cursors in a loop To use: call events(‘11/09’); more detailed tutorial at mysqltutorial.org

14  First: Chapter 9 Slides 18-37 from Elmasri 5 th edition  Some sources for Java access http://www.kitebird.com/articles/jdbc.html http://www.cs.ucdavis.edu/~devanbu/teaching/ 160/docs/mysql_java.pdf http://www.romow.com/computer-blog/how-to- use-mysql-with-java/ http://www.romow.com/computer-blog/how-to- use-mysql-with-java/  Can also access mysql with Perl, PHP, Python, Ruby


Download ppt "Stored Procedures, Triggers, Program Access Dr Lisa Ball 2008."

Similar presentations


Ads by Google