Skip to main content

MySql Trigger

MySql Trigger

A trigger is a stored program which executed automatically to respond to a specific event. such as insert, update or delete occurred in a table.

Syntax :

CREATE
    TRIGGER `event_name` BEFORE/AFTER INSERT/UPDATE/DELETE
    ON `database`.`table`
    FOR EACH ROW BEGIN
-- trigger body
-- this code is applied to every 
-- inserted/updated/deleted row
    END;

Notes:
event_name :  All triggers must have unique names within a schema
trigger_event : Indicates the kind of operation that activates the trigger.
tbl_name : The trigger becomes associated with the table named tbl_name

Example 1: Suppose you have user table and user_audit table and you want to track new users only. Then you have to create a trigger

DELIMITER $$

CREATE
TRIGGER `blog_after_insert` AFTER INSERT 
ON `user` 
FOR EACH ROW 
BEGIN
SET @changetype = 'NEW';
INSERT INTO user_audit (user_id, changetype) VALUES (NEW.id, @changetype);
    END
$$
DELIMITER;

Example 2: Create a trigger to set default_template is there is no default_template

DROP TRIGGER IF EXISTS `before_template_insert`;
DELIMITER //
CREATE TRIGGER `before_template_insert` BEFORE INSERT ON `templates`
FOR EACH ROW 

BEGIN

DECLARE default_Value tinyint(1);
SELECT COUNT(*) INTO default_Value FROM templates WHERE default_templ = 1;

IF(default_Value = 0) THEN
SET New.default_templ = 1;
ELSE
SET New.default_templ = 0;
END IF;
END 
//

DELIMITER ;

Example 3: Create TRIGGER to manage sort order

DROP TRIGGER IF EXISTS `before_flower_insert`;
DELIMITER //
CREATE TRIGGER `before_flower_insert` BEFORE INSERT ON `flowers`
FOR EACH ROW 
BEGIN
SET New.order_id =1 + IFNULL((SELECT MAX(order_id) FROM flowers), 0);
END 
//
DELIMITER ;

Example 4: TRIGGER to update same table after new row insert

DELIMITER $$ 
DROP TRIGGER IF EXISTS parkmedia_amount $$ 
CREATE TRIGGER parkmedia_amount 
BEFORE INSERT ON `parkmedia` FOR EACH ROW 
BEGIN 
IF NEW.media_type = 'vid' THEN 
SET new.amount = (SELECT CAST(default_values AS DECIMAL(10, 2)) as amount from payment_gateways where title ='vid_amount');
ELSE 
SET new.amount = (SELECT CAST(default_values AS DECIMAL(10, 2)) as amount from payment_gateways where title ='img_amount'); 
END IF; 
END; 
$$ 
DELIMITER ; 

Comments

Popular posts from this blog

Generate XML file in Cakephp

Steps to Generate XML file using CakePHP: Step-1 Enable to parse xml extension in config route.php file.     Router::parseExtensions('xml'); Step-2 Add Request Handler Component to the Controller    var $components = array(‘RequestHandler’); Step-3 Add controller Action For XML Generation in Post Controller     function generateXMLFile()     {         if ($this->RequestHandler->isXml()) { // check request type             $this->layout = 'empty'; // create an empty layout in app/views/layouts/empty.ctp              }        }  Add header code in empty layout <?php header('Content-type: text/xml');?> <?php echo $this->Xml->header(); ?> <?php echo $content_for_layout; ?> Step-4 Set up View To generate XML Create xml folder inside Posts vi...

Simple JavaScript Object and Class Examples

In JavaScript, most things are objects. An object is a collection of related data and/or functionality Namespace: Everything you create in JavaScript is by default global. In JavaScript namespace is Global object . How to create a namespace in JavaScript? Create one global object, and all variables, methods, and functions become properties of that object. Example:  // global namespace var MYAPP = MYAPP || {}; Explaination: Here we first checked whether MYAPP is already defined.If yes, then use the existing MYAPP global object, otherwise create an empty object called MYAPP How to create sub namespaces? // sub namespace MYAPP.event = {}; Class JavaScript is a prototype-based language and contains no class statement.JavaScript classes create simple objects and deal with inheritance. Example: var Person = function () {}; Explaination: Here we define a new class called Person with an empty constructor. Use the class keyword class Calculation {}; A class expr...

How to Add Next Previous links to The Event Calendar

Add Next/Previous links to The Event Calendar Wordpress Plugin Add code to your child theme’s functions.php file /**  * Allows visitors to page forward/backwards in any direction within month view */ if ( class_exists( 'Tribe__Events__Main' ) ) { class ContinualMonthViewPagination {     public function __construct() {         add_filter( 'tribe_events_the_next_month_link', array( $this, 'next_month' ) );         add_filter( 'tribe_events_the_previous_month_link', array( $this, 'previous_month' ) );     }     public function next_month() {         $url = tribe_get_next_month_link();         $text = tribe_get_next_month_text();         $date = Tribe__Events__Main::instance()->nextMonth( tribe_get_month_view_date() );         return '<a data-month="' . $date . '" href="' . $url . '" rel="next"...