{"id":1317,"date":"2018-08-06T19:33:04","date_gmt":"2018-08-06T19:33:04","guid":{"rendered":"http:\/\/dbtut.com\/?p=1317"},"modified":"2018-11-09T13:36:12","modified_gmt":"2018-11-09T13:36:12","slug":"how-to-create-a-trigger-on-postgresql","status":"publish","type":"post","link":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/","title":{"rendered":"How To Create a Trigger On PostgreSQL"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>With using triggers in PostgreSQL, you can trigger another event before an event occurs (BEFORE TRIGGER).<\/p>\n<p>Or you can trigger another event after it happens (AFTER TRIGGER).<\/p>\n<p>Or you can replace this event with another event before the event occurs (INSTEAD OF TRIGGER).<\/p>\n<p>Let&#8217;s make some examples of the trigger types we mentioned above.<\/p>\n<p>First, create a few tables with the help of the following scripts and add some records to the trigger_example table.<\/p>\n<pre class=\"lang:default decode:true\">CREATE TABLE trigger_example (name VARCHAR(50));\r\nCREATE TABLE trigger_example_deleted (name VARCHAR(50));\r\nCREATE TABLE trigger_example_inserted (name VARCHAR(50));\r\nCREATE TABLE trigger_example_updated (newname VARCHAR(50), oldname VARCHAR(50));\r\nINSERT INTO trigger_example (name) VALUES('Nurullah CAKIR'),('Keanu Reaves');<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/487.png\" width=\"633\" height=\"166\" \/><\/p>\n<p>&nbsp;<\/p>\n<h3>BEFORE TRIGGER:<\/h3>\n<p>Let&#8217;s move on by making an example.<\/p>\n<p>We will create a before trigger.<\/p>\n<p>This trigger will transfer the new and old state of that record to the trigger_example_updated table before a record&#8217;s value changes in the trigger_example table.<\/p>\n<p>First, we create a procedure to use in trigger.<\/p>\n<pre class=\"lang:default decode:true\">CREATE OR REPLACE FUNCTION update_function()RETURNS trigger AS $xx$\r\nBEGIN\r\n\u00a0INSERT INTO trigger_example_updated(newname,oldname)\r\n\u00a0VALUES(NEW.name,OLD.name);\r\n\u00a0RETURN NEW;\r\nEND;\r\n$xx$ LANGUAGE plpgsql;<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/966.png\" width=\"624\" height=\"159\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Then we create the before trigger as follows.<\/p>\n<pre class=\"lang:default decode:true\">CREATE TRIGGER Before_Example\r\n\u00a0\u00a0\u00a0 BEFORE UPDATE ON trigger_example\r\n\u00a0\u00a0\u00a0 FOR EACH ROW\r\n\u00a0\u00a0\u00a0 WHEN (OLD.name &lt;&gt; NEW.name)\r\n\u00a0\u00a0\u00a0 EXECUTE PROCEDURE update_function();<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/854.png\" width=\"437\" height=\"133\" \/><\/p>\n<p>&nbsp;<\/p>\n<p><span lang=\"tr\">Lets <\/span><span lang=\"en-US\">update a record to test the trigger.<\/span><\/p>\n<pre class=\"lang:default decode:true \">UPDATE trigger_example SET name='Nuru Cakir' WHERE name='Nurullah CAKIR';<\/pre>\n<p>&nbsp;<\/p>\n<p>As you can see, the trigger works successfully.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/478.png\" width=\"685\" height=\"198\" \/><\/p>\n<p>&nbsp;<\/p>\n<h3>AFTER TRIGGER:<\/h3>\n<p lang=\"en-US\">In this trigger type, the trigger is triggered after the event occurs.<\/p>\n<p lang=\"en-US\">This is the only difference from Before Trigger.<\/p>\n<p lang=\"en-US\">You can repeat the example we made for before trigger for after trigger.<\/p>\n<p>&nbsp;<\/p>\n<h3>INSTEAD OF TRIGGER:<\/h3>\n<p lang=\"en-US\">In this trigger type, we trigger another event instead of an actual event.<\/p>\n<p lang=\"en-US\">Create a procedure as follows.<\/p>\n<p lang=\"en-US\"><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/372.png\" width=\"632\" height=\"153\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Later, when we want to create the INSTEAD OF Trigger, we will get an error as below.<\/p>\n<p>As you can see, we can not create an INSTEAD OF Trigger for tables.<\/p>\n<pre class=\"lang:default decode:true\">CREATE TRIGGER InsteadOf_Example\r\n\u00a0\u00a0\u00a0 INSTEAD OF INSERT ON trigger_example\r\n\u00a0\u00a0\u00a0 FOR EACH ROW\r\n\u00a0\u00a0\u00a0 EXECUTE PROCEDURE insteadof_function();<\/pre>\n<p>&nbsp;<\/p>\n<p><em>ERROR:\u00a0 &#8220;trigger_example&#8221; is a table<\/em><\/p>\n<p><em>DETAIL:\u00a0 Tables cannot have INSTEAD OF triggers.<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/291.png\" width=\"520\" height=\"149\" \/><\/p>\n<p>&nbsp;<\/p>\n<p style=\"margin: 0in; font-family: Georgia; font-size: 12.0pt;\">Lets create a view as follows.<\/p>\n<pre class=\"lang:default decode:true\">CREATE VIEW trigger_example_view AS\r\nSELECT name FROM trigger_example;<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/627.png\" width=\"474\" height=\"85\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Recreate the INSTEAD OF Trigger on this view in the following way.<\/p>\n<p>You may want to look at the following articles about Views.<\/p>\n<p>&#8220;<a href=\"http:\/\/dbtut.com\/index.php\/2018\/07\/25\/how-to-create-a-view-on-postgresql\/\" target=\"_blank\" rel=\"noopener\">How To Create a View On PostgreSQL<\/a>&#8220;,<\/p>\n<p>&#8220;<a href=\"http:\/\/dbtut.com\/index.php\/2018\/07\/26\/how-to-create-a-materialized-view-on-postgresql\/\" target=\"_blank\" rel=\"noopener\">How To Create a Materialized View On PostgreSQL<\/a>&#8220;,<\/p>\n<p>&#8220;<a href=\"http:\/\/dbtut.com\/index.php\/2018\/07\/27\/how-to-create-a-recursive-view-on-postgresql\/\" target=\"_blank\" rel=\"noopener\">How To Create a Recursive View On PostgreSQL<\/a>&#8220;,<\/p>\n<p>&#8220;<a href=\"http:\/\/dbtut.com\/index.php\/2018\/07\/30\/how-to-create-an-updateable-view-on-postgresql\/\" target=\"_blank\" rel=\"noopener\">How To Create an Updateable View On PostgreSQL<\/a>&#8220;,<\/p>\n<p>&#8220;<a href=\"http:\/\/dbtut.com\/index.php\/2018\/07\/31\/how-to-create-an-updateable-view-with-check-option-on-postgresql\/\" target=\"_blank\" rel=\"noopener\">How To Create an Updateable View WITH CHECK CONSTRAINT On PostgreSQL<\/a>&#8221;<\/p>\n<p>&nbsp;<\/p>\n<pre class=\"lang:default decode:true\">CREATE TRIGGER InsteadOf_Example\r\n\u00a0\u00a0\u00a0 INSTEAD OF INSERT ON trigger_example_view\r\n\u00a0\u00a0\u00a0 FOR EACH ROW\r\n\u00a0\u00a0\u00a0 EXECUTE PROCEDURE insteadof_function();<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/931.png\" width=\"482\" height=\"116\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>Let&#8217;s test the INSTEAD OF Trigger in the following way.<\/p>\n<p>It worked as you see it.<\/p>\n<pre class=\"lang:default decode:true\">INSERT INTO trigger_example_view (name) VALUES('InsteadOfExamples');\r\nSELECT * FROM trigger_example;\r\nSELECT * FROM trigger_example_inserted;<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"\" src=\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/655.png\" width=\"670\" height=\"285\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>I get the following table from postgresql.org.<\/p>\n<p>I think its useful.<\/p>\n<p>The following table summarizes which types of triggers may be used on tables, views, and foreign tables:<\/p>\n<div style=\"direction: ltr;\">\n<table style=\"direction: ltr; border-collapse: collapse; border: 1pt solid #A3A3A3;\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td style=\"background-color: #e0ecef; vertical-align: top; width: 1.0868in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black;\"><span style=\"font-weight: bold;\">When<\/span><\/p>\n<\/td>\n<td style=\"background-color: #e0ecef; vertical-align: top; width: 1.9527in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black;\"><span style=\"font-weight: bold;\">Event<\/span><\/p>\n<\/td>\n<td style=\"background-color: #e0ecef; vertical-align: top; width: 1.8125in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black;\"><span style=\"font-weight: bold;\">Row-level<\/span><\/p>\n<\/td>\n<td style=\"background-color: #e0ecef; vertical-align: top; width: 2.352in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black;\"><span style=\"font-weight: bold;\">Statement-level<\/span><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"background-color: white; vertical-align: top; width: 1.0868in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 10.0pt; color: black; text-align: center;\">BEFORE<\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 1.9527in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; color: black; text-align: center;\"><span style=\"font-size: 10.0pt;\">INSERT<\/span><span style=\"font-size: 9.1pt;\">\/<\/span><span style=\"font-size: 10.0pt;\">UPDATE<\/span><span style=\"font-size: 9.1pt;\">\/<\/span><span style=\"font-size: 10.0pt;\">DELETE<\/span><\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 1.8125in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black; text-align: center;\">Tables and foreign tables<\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 2.352in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black; text-align: center;\">Tables, views, and foreign tables<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"background-color: white; vertical-align: top; width: 1.0868in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: Georgia; font-size: 12.0pt;\">\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 1.9527in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 10.0pt; color: black; text-align: center;\">TRUNCATE<\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 1.8125in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black; text-align: center;\">\u2014<\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 2.352in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black; text-align: center;\">Tables<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"background-color: white; vertical-align: top; width: 1.0868in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 10.0pt; color: black; text-align: center;\">AFTER<\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 1.9527in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; color: black; text-align: center;\"><span style=\"font-size: 10.0pt;\">INSERT<\/span><span style=\"font-size: 9.1pt;\">\/<\/span><span style=\"font-size: 10.0pt;\">UPDATE<\/span><span style=\"font-size: 9.1pt;\">\/<\/span><span style=\"font-size: 10.0pt;\">DELETE<\/span><\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 1.8125in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black; text-align: center;\">Tables and foreign tables<\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 2.352in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black; text-align: center;\">Tables, views, and foreign tables<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"background-color: white; vertical-align: top; width: 1.0868in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: Georgia; font-size: 12.0pt;\">\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 1.9527in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 10.0pt; color: black; text-align: center;\">TRUNCATE<\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 1.8125in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black; text-align: center;\">\u2014<\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 2.352in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black; text-align: center;\">Tables<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"background-color: white; vertical-align: top; width: 1.0868in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 10.0pt; color: black; text-align: center;\">INSTEAD OF<\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 1.9527in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; color: black; text-align: center;\"><span style=\"font-size: 10.0pt;\">INSERT<\/span><span style=\"font-size: 9.1pt;\">\/<\/span><span style=\"font-size: 10.0pt;\">UPDATE<\/span><span style=\"font-size: 9.1pt;\">\/<\/span><span style=\"font-size: 10.0pt;\">DELETE<\/span><\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 1.8125in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black; text-align: center;\">Views<\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 2.352in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black; text-align: center;\">\u2014<\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"background-color: white; vertical-align: top; width: 1.0868in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: Georgia; font-size: 12.0pt;\">\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 1.9527in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 10.0pt; color: black; text-align: center;\">TRUNCATE<\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 1.8125in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black; text-align: center;\">\u2014<\/p>\n<\/td>\n<td style=\"background-color: white; vertical-align: top; width: 2.352in; padding: 4pt 4pt 4pt 4pt; border: 1pt solid #A3A3A3;\">\n<p style=\"margin: 0in; font-family: verdana; font-size: 9.1pt; color: black; text-align: center;\">\u2014<\/p>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_1317\" class=\"pvc_stats all  \" data-element-id=\"1317\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dbtut.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; With using triggers in PostgreSQL, you can trigger another event before an event occurs (BEFORE TRIGGER). Or you can trigger another event after it happens (AFTER TRIGGER). Or you can replace this event with another event before the event occurs (INSTEAD OF TRIGGER). Let&#8217;s make some examples of the trigger types we mentioned above. &hellip;<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_1317\" class=\"pvc_stats all  \" data-element-id=\"1317\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dbtut.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[5],"tags":[],"class_list":["post-1317","post","type-post","status-publish","format-standard","","category-postgres"],"aioseo_notices":[],"a3_pvc":{"activated":true,"total_views":462,"today_views":0},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How To Create a Trigger On PostgreSQL - Database Tutorials<\/title>\n<meta name=\"description\" content=\"How To Create a Trigger On PostgreSQL\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How To Create a Trigger On PostgreSQL - Database Tutorials\" \/>\n<meta property=\"og:description\" content=\"How To Create a Trigger On PostgreSQL\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/\" \/>\n<meta property=\"og:site_name\" content=\"Database Tutorials\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-06T19:33:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-11-09T13:36:12+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/487.png\" \/>\n<meta name=\"author\" content=\"dbtut\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"dbtut\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/\"},\"author\":{\"name\":\"dbtut\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/fc047c39e1e53dce28fc4253529ea408\"},\"headline\":\"How To Create a Trigger On PostgreSQL\",\"datePublished\":\"2018-08-06T19:33:04+00:00\",\"dateModified\":\"2018-11-09T13:36:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/\"},\"wordCount\":432,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/dbtut.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/487.png\",\"articleSection\":[\"PostgreSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/\",\"url\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/\",\"name\":\"How To Create a Trigger On PostgreSQL - Database Tutorials\",\"isPartOf\":{\"@id\":\"https:\/\/dbtut.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/487.png\",\"datePublished\":\"2018-08-06T19:33:04+00:00\",\"dateModified\":\"2018-11-09T13:36:12+00:00\",\"description\":\"How To Create a Trigger On PostgreSQL\",\"breadcrumb\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#primaryimage\",\"url\":\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/487.png\",\"contentUrl\":\"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/487.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/dbtut.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"How To Create a Trigger On PostgreSQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dbtut.com\/#website\",\"url\":\"https:\/\/dbtut.com\/\",\"name\":\"Database Tutorials\",\"description\":\"MSSQL, Oracle, PostgreSQL, MySQL, MariaDB, DB2, Sybase, Teradata, Big Data, NOSQL, MongoDB, Couchbase, Cassandra, Windows, Linux\",\"publisher\":{\"@id\":\"https:\/\/dbtut.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dbtut.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/dbtut.com\/#organization\",\"name\":\"dbtut\",\"url\":\"https:\/\/dbtut.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg\",\"contentUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg\",\"width\":223,\"height\":36,\"caption\":\"dbtut\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/fc047c39e1e53dce28fc4253529ea408\",\"name\":\"dbtut\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c322c32021bf651d9e103b183963c479a9c9791ead0715f4348203496c39aa54?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c322c32021bf651d9e103b183963c479a9c9791ead0715f4348203496c39aa54?s=96&d=mm&r=g\",\"caption\":\"dbtut\"},\"description\":\"We are a team with over 10 years of database management and BI experience. Our Expertises: Oracle, SQL Server, PostgreSQL, MySQL, MongoDB, Elasticsearch, Kibana, Grafana.\",\"sameAs\":[\"http:\/\/NurullahCAKIR\"],\"url\":\"https:\/\/dbtut.com\/index.php\/author\/dbtut\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How To Create a Trigger On PostgreSQL - Database Tutorials","description":"How To Create a Trigger On PostgreSQL","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/","og_locale":"en_US","og_type":"article","og_title":"How To Create a Trigger On PostgreSQL - Database Tutorials","og_description":"How To Create a Trigger On PostgreSQL","og_url":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/","og_site_name":"Database Tutorials","article_published_time":"2018-08-06T19:33:04+00:00","article_modified_time":"2018-11-09T13:36:12+00:00","og_image":[{"url":"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/487.png","type":"","width":"","height":""}],"author":"dbtut","twitter_card":"summary_large_image","twitter_misc":{"Written by":"dbtut","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#article","isPartOf":{"@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/"},"author":{"name":"dbtut","@id":"https:\/\/dbtut.com\/#\/schema\/person\/fc047c39e1e53dce28fc4253529ea408"},"headline":"How To Create a Trigger On PostgreSQL","datePublished":"2018-08-06T19:33:04+00:00","dateModified":"2018-11-09T13:36:12+00:00","mainEntityOfPage":{"@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/"},"wordCount":432,"commentCount":0,"publisher":{"@id":"https:\/\/dbtut.com\/#organization"},"image":{"@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#primaryimage"},"thumbnailUrl":"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/487.png","articleSection":["PostgreSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/","url":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/","name":"How To Create a Trigger On PostgreSQL - Database Tutorials","isPartOf":{"@id":"https:\/\/dbtut.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#primaryimage"},"image":{"@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#primaryimage"},"thumbnailUrl":"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/487.png","datePublished":"2018-08-06T19:33:04+00:00","dateModified":"2018-11-09T13:36:12+00:00","description":"How To Create a Trigger On PostgreSQL","breadcrumb":{"@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#primaryimage","url":"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/487.png","contentUrl":"http:\/\/dbtut.com\/wp-content\/uploads\/2018\/08\/487.png"},{"@type":"BreadcrumbList","@id":"https:\/\/dbtut.com\/index.php\/2018\/08\/06\/how-to-create-a-trigger-on-postgresql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dbtut.com\/"},{"@type":"ListItem","position":2,"name":"How To Create a Trigger On PostgreSQL"}]},{"@type":"WebSite","@id":"https:\/\/dbtut.com\/#website","url":"https:\/\/dbtut.com\/","name":"Database Tutorials","description":"MSSQL, Oracle, PostgreSQL, MySQL, MariaDB, DB2, Sybase, Teradata, Big Data, NOSQL, MongoDB, Couchbase, Cassandra, Windows, Linux","publisher":{"@id":"https:\/\/dbtut.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dbtut.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/dbtut.com\/#organization","name":"dbtut","url":"https:\/\/dbtut.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/#\/schema\/logo\/image\/","url":"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg","contentUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg","width":223,"height":36,"caption":"dbtut"},"image":{"@id":"https:\/\/dbtut.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dbtut.com\/#\/schema\/person\/fc047c39e1e53dce28fc4253529ea408","name":"dbtut","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c322c32021bf651d9e103b183963c479a9c9791ead0715f4348203496c39aa54?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c322c32021bf651d9e103b183963c479a9c9791ead0715f4348203496c39aa54?s=96&d=mm&r=g","caption":"dbtut"},"description":"We are a team with over 10 years of database management and BI experience. Our Expertises: Oracle, SQL Server, PostgreSQL, MySQL, MongoDB, Elasticsearch, Kibana, Grafana.","sameAs":["http:\/\/NurullahCAKIR"],"url":"https:\/\/dbtut.com\/index.php\/author\/dbtut\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts\/1317","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/comments?post=1317"}],"version-history":[{"count":0,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts\/1317\/revisions"}],"wp:attachment":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/media?parent=1317"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/categories?post=1317"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/tags?post=1317"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}