CINXE.COM

Database trigger - Wikipedia

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available" lang="en" dir="ltr"> <head> <meta charset="UTF-8"> <title>Database trigger - Wikipedia</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-sticky-header-enabled vector-toc-available";var cookie=document.cookie.match(/(?:^|; )enwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"7c85cf6c-a5ab-4873-ae30-e907048984d0","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Database_trigger","wgTitle":"Database trigger","wgCurRevisionId":1272814768,"wgRevisionId":1272814768,"wgArticleId":1384316,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Articles with short description","Short description is different from Wikidata","All articles with specifically marked weasel-worded phrases","Articles with specifically marked weasel-worded phrases from June 2012","Articles with example SQL code","Database management systems","Events (computing)"],"wgPageViewLanguage":"en","wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"Database_trigger","wgRelevantArticleId":1384316,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgFlaggedRevsParams":{"tags":{"status":{"levels":1}}},"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":false,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":20000,"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q835769","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":false,"wgGELevelingUpEnabledForUser":false}; RLSTATE={"ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.cite.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","jquery.makeCollapsible.styles":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready"};RLPAGEMODULES=["ext.cite.ux-enhancements","ext.pygments.view","site","mediawiki.page.ready","jquery.makeCollapsible","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.ReferenceTooltips","ext.gadget.switcher","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.growthExperiments.SuggestedEditSession"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=ext.cite.styles%7Cext.pygments%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cjquery.makeCollapsible.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=en&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=en&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.21"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Database trigger - Wikipedia"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//en.m.wikipedia.org/wiki/Database_trigger"> <link rel="alternate" type="application/x-wiki" title="Edit this page" href="/w/index.php?title=Database_trigger&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipedia (en)"> <link rel="EditURI" type="application/rsd+xml" href="//en.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://en.wikipedia.org/wiki/Database_trigger"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en"> <link rel="alternate" type="application/atom+xml" title="Wikipedia Atom feed" href="/w/index.php?title=Special:RecentChanges&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Database_trigger rootpage-Database_trigger skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Jump to content</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" title="Main menu" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Main menu" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Main menu</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Main menu</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">hide</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navigation </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Main_Page" title="Visit the main page [z]" accesskey="z"><span>Main page</span></a></li><li id="n-contents" class="mw-list-item"><a href="/wiki/Wikipedia:Contents" title="Guides to browsing Wikipedia"><span>Contents</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Current_events" title="Articles related to current events"><span>Current events</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Special:Random" title="Visit a randomly selected article [x]" accesskey="x"><span>Random article</span></a></li><li id="n-aboutsite" class="mw-list-item"><a href="/wiki/Wikipedia:About" title="Learn about Wikipedia and how it works"><span>About Wikipedia</span></a></li><li id="n-contactpage" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us" title="How to contact Wikipedia"><span>Contact us</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Contribute </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-help" class="mw-list-item"><a href="/wiki/Help:Contents" title="Guidance on how to use and edit Wikipedia"><span>Help</span></a></li><li id="n-introduction" class="mw-list-item"><a href="/wiki/Help:Introduction" title="Learn how to edit Wikipedia"><span>Learn to edit</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikipedia:Community_portal" title="The hub for editors"><span>Community portal</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Special:RecentChanges" title="A list of recent changes to Wikipedia [r]" accesskey="r"><span>Recent changes</span></a></li><li id="n-upload" class="mw-list-item"><a href="/wiki/Wikipedia:File_upload_wizard" title="Add images or other media for use on Wikipedia"><span>Upload file</span></a></li><li id="n-specialpages" class="mw-list-item"><a href="/wiki/Special:SpecialPages"><span>Special pages</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Main_Page" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipedia" src="/static/images/mobile/copyright/wikipedia-wordmark-en.svg" style="width: 7.5em; height: 1.125em;"> <img class="mw-logo-tagline" alt="The Free Encyclopedia" src="/static/images/mobile/copyright/wikipedia-tagline-en.svg" width="117" height="13" style="width: 7.3125em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Special:Search" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Search Wikipedia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia" aria-label="Search Wikipedia" autocapitalize="sentences" title="Search Wikipedia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Personal tools"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page&#039;s font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Appearance" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Appearance</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="https://donate.wikimedia.org/?wmf_source=donate&amp;wmf_medium=sidebar&amp;wmf_campaign=en.wikipedia.org&amp;uselang=en" class=""><span>Donate</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:CreateAccount&amp;returnto=Database+trigger" title="You are encouraged to create an account and log in; however, it is not mandatory" class=""><span>Create account</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Special:UserLogin&amp;returnto=Database+trigger" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o" class=""><span>Log in</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Log in and more options" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Personal tools" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Personal tools</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="User menu" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="https://donate.wikimedia.org/?wmf_source=donate&amp;wmf_medium=sidebar&amp;wmf_campaign=en.wikipedia.org&amp;uselang=en"><span>Donate</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:CreateAccount&amp;returnto=Database+trigger" title="You are encouraged to create an account and log in; however, it is not mandatory"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Create account</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Special:UserLogin&amp;returnto=Database+trigger" title="You&#039;re encouraged to log in; however, it&#039;s not mandatory. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Log in</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Pages for logged out editors <a href="/wiki/Help:Introduction" aria-label="Learn more about editing"><span>learn more</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Special:MyContributions" title="A list of edits made from this IP address [y]" accesskey="y"><span>Contributions</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Special:MyTalk" title="Discussion about edits from this IP address [n]" accesskey="n"><span>Talk</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><!-- CentralNotice --></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="Site"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Contents" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Contents</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">hide</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">(Top)</div> </a> </li> <li id="toc-Triggers_in_DBMS" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Triggers_in_DBMS"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Triggers in DBMS</span> </div> </a> <button aria-controls="toc-Triggers_in_DBMS-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Triggers in DBMS subsection</span> </button> <ul id="toc-Triggers_in_DBMS-sublist" class="vector-toc-list"> <li id="toc-Oracle" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Oracle"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1</span> <span>Oracle</span> </div> </a> <ul id="toc-Oracle-sublist" class="vector-toc-list"> <li id="toc-Schema-level_triggers" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#Schema-level_triggers"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1.1</span> <span>Schema-level triggers</span> </div> </a> <ul id="toc-Schema-level_triggers-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-System-level_triggers" class="vector-toc-list-item vector-toc-level-3"> <a class="vector-toc-link" href="#System-level_triggers"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.1.2</span> <span>System-level triggers</span> </div> </a> <ul id="toc-System-level_triggers-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Microsoft_SQL_Server" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Microsoft_SQL_Server"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.2</span> <span>Microsoft SQL Server</span> </div> </a> <ul id="toc-Microsoft_SQL_Server-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-PostgreSQL" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#PostgreSQL"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.3</span> <span>PostgreSQL</span> </div> </a> <ul id="toc-PostgreSQL-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Firebird" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Firebird"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.4</span> <span>Firebird</span> </div> </a> <ul id="toc-Firebird-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-MySQL/MariaDB" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#MySQL/MariaDB"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.5</span> <span>MySQL/MariaDB</span> </div> </a> <ul id="toc-MySQL/MariaDB-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-IBM_DB2_LUW" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#IBM_DB2_LUW"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.6</span> <span>IBM DB2 LUW</span> </div> </a> <ul id="toc-IBM_DB2_LUW-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-SQLite" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#SQLite"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.7</span> <span>SQLite</span> </div> </a> <ul id="toc-SQLite-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-XML_databases" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#XML_databases"> <div class="vector-toc-text"> <span class="vector-toc-numb">1.8</span> <span>XML databases</span> </div> </a> <ul id="toc-XML_databases-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Row_and_statement_level_triggers" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Row_and_statement_level_triggers"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Row and statement level triggers</span> </div> </a> <button aria-controls="toc-Row_and_statement_level_triggers-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Toggle Row and statement level triggers subsection</span> </button> <ul id="toc-Row_and_statement_level_triggers-sublist" class="vector-toc-list"> <li id="toc-After_-_statement-level_trigger" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#After_-_statement-level_trigger"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>After - statement-level trigger</span> </div> </a> <ul id="toc-After_-_statement-level_trigger-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Before_each_-_row-level_trigger" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Before_each_-_row-level_trigger"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.2</span> <span>Before each - row-level trigger</span> </div> </a> <ul id="toc-Before_each_-_row-level_trigger-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Before_-_statement-level_trigger" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Before_-_statement-level_trigger"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.3</span> <span>Before - statement-level trigger</span> </div> </a> <ul id="toc-Before_-_statement-level_trigger-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-References" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#References"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>References</span> </div> </a> <ul id="toc-References-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-External_links" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#External_links"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>External links</span> </div> </a> <ul id="toc-External_links-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" title="Table of Contents" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Database trigger</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Go to an article in another language. Available in 26 languages" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-26" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">26 languages</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%A7%D9%84%D9%85%D8%AD%D8%B1%D9%83_%D9%81%D9%8A_%D9%82%D9%88%D8%A7%D8%B9%D8%AF_%D8%A7%D9%84%D8%A8%D9%8A%D8%A7%D9%86%D8%A7%D8%AA" title="المحرك في قواعد البيانات – Arabic" lang="ar" hreflang="ar" data-title="المحرك في قواعد البيانات" data-language-autonym="العربية" data-language-local-name="Arabic" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-az mw-list-item"><a href="https://az.wikipedia.org/wiki/Veril%C9%99nl%C9%99r_bazas%C4%B1_triggeri" title="Verilənlər bazası triggeri – Azerbaijani" lang="az" hreflang="az" data-title="Verilənlər bazası triggeri" data-language-autonym="Azərbaycanca" data-language-local-name="Azerbaijani" class="interlanguage-link-target"><span>Azərbaycanca</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Trigger" title="Trigger – Catalan" lang="ca" hreflang="ca" data-title="Trigger" data-language-autonym="Català" data-language-local-name="Catalan" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Trigger_(datab%C3%A1ze)" title="Trigger (databáze) – Czech" lang="cs" hreflang="cs" data-title="Trigger (databáze)" data-language-autonym="Čeština" data-language-local-name="Czech" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Datenbanktrigger" title="Datenbanktrigger – German" lang="de" hreflang="de" data-title="Datenbanktrigger" data-language-autonym="Deutsch" data-language-local-name="German" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Trigger_(base_de_datos)" title="Trigger (base de datos) – Spanish" lang="es" hreflang="es" data-title="Trigger (base de datos)" data-language-autonym="Español" data-language-local-name="Spanish" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D9%85%D8%AD%D8%B1%DA%A9_%D9%BE%D8%A7%DB%8C%DA%AF%D8%A7%D9%87_%D8%AF%D8%A7%D8%AF%D9%87" title="محرک پایگاه داده – Persian" lang="fa" hreflang="fa" data-title="محرک پایگاه داده" data-language-autonym="فارسی" data-language-local-name="Persian" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/D%C3%A9clencheur" title="Déclencheur – French" lang="fr" hreflang="fr" data-title="Déclencheur" data-language-autonym="Français" data-language-local-name="French" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4_%ED%8A%B8%EB%A6%AC%EA%B1%B0" title="데이터베이스 트리거 – Korean" lang="ko" hreflang="ko" data-title="데이터베이스 트리거" data-language-autonym="한국어" data-language-local-name="Korean" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Trigger_(basi_di_dati)" title="Trigger (basi di dati) – Italian" lang="it" hreflang="it" data-title="Trigger (basi di dati)" data-language-autonym="Italiano" data-language-local-name="Italian" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-sw mw-list-item"><a href="https://sw.wikipedia.org/wiki/Kisituo" title="Kisituo – Swahili" lang="sw" hreflang="sw" data-title="Kisituo" data-language-autonym="Kiswahili" data-language-local-name="Swahili" class="interlanguage-link-target"><span>Kiswahili</span></a></li><li class="interlanguage-link interwiki-lv mw-list-item"><a href="https://lv.wikipedia.org/wiki/Trigeris_(DBPS)" title="Trigeris (DBPS) – Latvian" lang="lv" hreflang="lv" data-title="Trigeris (DBPS)" data-language-autonym="Latviešu" data-language-local-name="Latvian" class="interlanguage-link-target"><span>Latviešu</span></a></li><li class="interlanguage-link interwiki-hu mw-list-item"><a href="https://hu.wikipedia.org/wiki/Trigger_(adatb%C3%A1zisok)" title="Trigger (adatbázisok) – Hungarian" lang="hu" hreflang="hu" data-title="Trigger (adatbázisok)" data-language-autonym="Magyar" data-language-local-name="Hungarian" class="interlanguage-link-target"><span>Magyar</span></a></li><li class="interlanguage-link interwiki-mn mw-list-item"><a href="https://mn.wikipedia.org/wiki/%D3%A8%D0%B3%D3%A9%D0%B3%D0%B4%D0%BB%D0%B8%D0%B9%D0%BD_%D1%81%D0%B0%D0%BD%D0%B3%D0%B8%D0%B9%D0%BD_%D1%82%D1%80%D0%B8%D0%B3%D0%B3%D0%B5%D1%80" title="Өгөгдлийн сангийн триггер – Mongolian" lang="mn" hreflang="mn" data-title="Өгөгдлийн сангийн триггер" data-language-autonym="Монгол" data-language-local-name="Mongolian" class="interlanguage-link-target"><span>Монгол</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Trigger" title="Trigger – Dutch" lang="nl" hreflang="nl" data-title="Trigger" data-language-autonym="Nederlands" data-language-local-name="Dutch" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-ja mw-list-item"><a href="https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9%E3%83%88%E3%83%AA%E3%82%AC" title="データベーストリガ – Japanese" lang="ja" hreflang="ja" data-title="データベーストリガ" data-language-autonym="日本語" data-language-local-name="Japanese" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-no mw-list-item"><a href="https://no.wikipedia.org/wiki/Databaseutl%C3%B8ser" title="Databaseutløser – Norwegian Bokmål" lang="nb" hreflang="nb" data-title="Databaseutløser" data-language-autonym="Norsk bokmål" data-language-local-name="Norwegian Bokmål" class="interlanguage-link-target"><span>Norsk bokmål</span></a></li><li class="interlanguage-link interwiki-pl mw-list-item"><a href="https://pl.wikipedia.org/wiki/Wyzwalacz" title="Wyzwalacz – Polish" lang="pl" hreflang="pl" data-title="Wyzwalacz" data-language-autonym="Polski" data-language-local-name="Polish" class="interlanguage-link-target"><span>Polski</span></a></li><li class="interlanguage-link interwiki-pt mw-list-item"><a href="https://pt.wikipedia.org/wiki/Gatilho_(banco_de_dados)" title="Gatilho (banco de dados) – Portuguese" lang="pt" hreflang="pt" data-title="Gatilho (banco de dados)" data-language-autonym="Português" data-language-local-name="Portuguese" class="interlanguage-link-target"><span>Português</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%A2%D1%80%D0%B8%D0%B3%D0%B3%D0%B5%D1%80_(%D0%B1%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)" title="Триггер (базы данных) – Russian" lang="ru" hreflang="ru" data-title="Триггер (базы данных)" data-language-autonym="Русский" data-language-local-name="Russian" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/Trigeri" title="Trigeri – Serbian" lang="sr" hreflang="sr" data-title="Trigeri" data-language-autonym="Српски / srpski" data-language-local-name="Serbian" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Her%C3%A4te" title="Heräte – Finnish" lang="fi" hreflang="fi" data-title="Heräte" data-language-autonym="Suomi" data-language-local-name="Finnish" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Trigger_(databasteknik)" title="Trigger (databasteknik) – Swedish" lang="sv" hreflang="sv" data-title="Trigger (databasteknik)" data-language-autonym="Svenska" data-language-local-name="Swedish" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-tr mw-list-item"><a href="https://tr.wikipedia.org/wiki/Trigger" title="Trigger – Turkish" lang="tr" hreflang="tr" data-title="Trigger" data-language-autonym="Türkçe" data-language-local-name="Turkish" class="interlanguage-link-target"><span>Türkçe</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%A2%D1%80%D0%B8%D0%B3%D0%B5%D1%80_(%D0%B1%D0%B0%D0%B7%D0%B8_%D0%B4%D0%B0%D0%BD%D0%B8%D1%85)" title="Тригер (бази даних) – Ukrainian" lang="uk" hreflang="uk" data-title="Тригер (бази даних)" data-language-autonym="Українська" data-language-local-name="Ukrainian" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E8%A7%A6%E5%8F%91%E5%99%A8_(%E6%95%B0%E6%8D%AE%E5%BA%93)" title="触发器 (数据库) – Chinese" lang="zh" hreflang="zh" data-title="触发器 (数据库)" data-language-autonym="中文" data-language-local-name="Chinese" class="interlanguage-link-target"><span>中文</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q835769#sitelinks-wikipedia" title="Edit interlanguage links" class="wbc-editpage">Edit links</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Namespaces"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Database_trigger" title="View the content page [c]" accesskey="c"><span>Article</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Talk:Database_trigger" rel="discussion" title="Discuss improvements to the content page [t]" accesskey="t"><span>Talk</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Change language variant" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">English</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Views"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Database_trigger"><span>Read</span></a></li><li id="ca-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Database_trigger&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Database_trigger&amp;action=history" title="Past revisions of this page [h]" accesskey="h"><span>View history</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Tools" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Tools</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Tools</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">hide</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="More options" > <div class="vector-menu-heading"> Actions </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Database_trigger"><span>Read</span></a></li><li id="ca-more-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Database_trigger&amp;action=edit" title="Edit this page [e]" accesskey="e"><span>Edit</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Database_trigger&amp;action=history"><span>View history</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> General </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Special:WhatLinksHere/Database_trigger" title="List of all English Wikipedia pages containing links to this page [j]" accesskey="j"><span>What links here</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Special:RecentChangesLinked/Database_trigger" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k"><span>Related changes</span></a></li><li id="t-upload" class="mw-list-item"><a href="//en.wikipedia.org/wiki/Wikipedia:File_Upload_Wizard" title="Upload files [u]" accesskey="u"><span>Upload file</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Database_trigger&amp;oldid=1272814768" title="Permanent link to this revision of this page"><span>Permanent link</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Database_trigger&amp;action=info" title="More information about this page"><span>Page information</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Special:CiteThisPage&amp;page=Database_trigger&amp;id=1272814768&amp;wpFormIdentifier=titleform" title="Information on how to cite this page"><span>Cite this page</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Special:UrlShortener&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDatabase_trigger"><span>Get shortened URL</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Special:QrCode&amp;url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FDatabase_trigger"><span>Download QR code</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Print/export </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Special:DownloadAsPdf&amp;page=Database_trigger&amp;action=show-download-screen" title="Download this page as a PDF file"><span>Download as PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Database_trigger&amp;printable=yes" title="Printable version of this page [p]" accesskey="p"><span>Printable version</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> In other projects </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q835769" title="Structured data on this page hosted by Wikidata [g]" accesskey="g"><span>Wikidata item</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Page tools"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Appearance"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Appearance</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">move to sidebar</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">hide</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">From Wikipedia, the free encyclopedia</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr"><div class="shortdescription nomobile noexcerpt noprint searchaux" style="display:none">Database code that executes after certain events on a table</div> <p>A <b>database trigger</b> is <a href="/wiki/Procedural_code" class="mw-redirect" title="Procedural code">procedural code</a> that is automatically executed in response to certain <a href="/wiki/Event_(computing)" title="Event (computing)">events</a> on a particular <a href="/wiki/Table_(database)" title="Table (database)">table</a> or <a href="/wiki/View_(database)" class="mw-redirect" title="View (database)">view</a> in a <a href="/wiki/Database" title="Database">database</a>. The trigger is mostly used for maintaining the <a href="/wiki/Database_integrity" class="mw-redirect" title="Database integrity">integrity</a> of the information on the database. For example, when a new record (representing a new worker) is added to the employees table, new records should also be created in the tables of the taxes, vacations and salaries. Triggers can also be used to log historical data, for example to keep track of employees' previous salaries. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Triggers_in_DBMS">Triggers in DBMS</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=1" title="Edit section: Triggers in DBMS"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Below follows a series of descriptions of how some popular <a href="/wiki/DBMS" class="mw-redirect" title="DBMS">DBMS</a> support triggers. </p> <div class="mw-heading mw-heading3"><h3 id="Oracle">Oracle</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=2" title="Edit section: Oracle"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>In addition to triggers that fire (and execute <a href="/wiki/PL/SQL" title="PL/SQL">PL/SQL</a> code) when data is modified, <a href="/wiki/Oracle_Database" title="Oracle Database">Oracle 10g</a> supports triggers that fire when schema-level objects (that is, tables) are modified and when user logon or logoff events occur. </p> <div class="mw-heading mw-heading4"><h4 id="Schema-level_triggers">Schema-level triggers</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=3" title="Edit section: Schema-level triggers"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li>After Creation</li> <li>Before Alter</li> <li>After Alter</li> <li>Before Drop</li> <li>After Drop</li> <li>Before Insert</li></ul> <p>The four main types of triggers are: </p> <ol><li>Row-level trigger: This gets executed before or after <i>any column value of a row</i> changes.</li> <li>Column-level trigger: This gets executed before or after the <i>specified column</i> changes.</li> <li>For each row type: This trigger gets executed once for each row of the <a href="/wiki/Result_set" title="Result set">result set</a> affected by an insert/update/delete.</li> <li>For each statement type: This trigger gets executed only once for the entire result set, but also fires each time the statement is executed.</li></ol> <div class="mw-heading mw-heading4"><h4 id="System-level_triggers">System-level triggers</h4><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=4" title="Edit section: System-level triggers"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>From <a href="/wiki/Oracle8i" class="mw-redirect" title="Oracle8i">Oracle 8i</a>, database events - logons, logoffs, startups - can fire Oracle triggers.<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">&#91;</span>1<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="Microsoft_SQL_Server">Microsoft SQL Server</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=5" title="Edit section: Microsoft SQL Server"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>MS SQL Server supports trigger for DML and DDL statement plus special trigger "logon". </p><p>The scope of DDL triggers can be a database (CREATE TRIGGER name ON DATABASE ...) or the entire SQL Server instance (CREATE TRIGGER name ON ALL SERVER). When you use the entire instance, you can capture all events executed on commands that have server-level scope as well as any commands that have database-level scope in the SQL instance. </p><p>A list of all available firing events in Microsoft SQL Server for DDL triggers is available on <a href="/wiki/Microsoft_Docs" title="Microsoft Docs">Microsoft Docs</a>.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">&#91;</span>2<span class="cite-bracket">&#93;</span></a></sup> </p><p>Performing conditional actions in DML triggers (or testing data following modification) is done through accessing the pseudo tables (temporary ones) Inserted and Deleted tables. DML trigger are always "FOR EACH STATEMENT" but can be code at row event ("FOR EACH ROW") using a cursor on the inserted/deleted pseudo tables. </p> <div class="mw-heading mw-heading3"><h3 id="PostgreSQL">PostgreSQL</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=6" title="Edit section: PostgreSQL"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Introduced support for triggers in 1997. The following functionality in <a href="/wiki/SQL:2003" title="SQL:2003">SQL:2003</a> was previously not implemented in PostgreSQL: </p> <ul><li>SQL allows triggers to fire on updates to specific columns; As of version 9.0 of PostgreSQL this feature is also implemented in PostgreSQL.</li> <li>The standard allows the execution of a number of SQL statements other than <a href="/wiki/Select_(SQL)" title="Select (SQL)">SELECT</a>, <a href="/wiki/Insert_(SQL)" title="Insert (SQL)">INSERT</a>, <a href="/wiki/Update_(SQL)" title="Update (SQL)">UPDATE</a>, such as CREATE TABLE as the triggered action. This can be done through creating a stored procedure or function to call CREATE TABLE.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">&#91;</span>3<span class="cite-bracket">&#93;</span></a></sup></li></ul> <p>Synopsis: </p> <div class="mw-highlight mw-highlight-lang-postgresql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="k">name</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">BEFORE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">AFTER</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">event</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="mf">...</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">EACH</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="k">ROW</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">STATEMENT</span><span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="p">]</span> <span class="w"> </span><span class="k">EXECUTE</span><span class="w"> </span><span class="k">PROCEDURE</span><span class="w"> </span><span class="n">funcname</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">arguments</span><span class="w"> </span><span class="p">)</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="Firebird">Firebird</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=7" title="Edit section: Firebird"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p><a href="/wiki/Firebird_(database_server)" title="Firebird (database server)">Firebird</a> supports multiple row-level, BEFORE or AFTER, INSERT, UPDATE, DELETE (or any combination of thereof) triggers per table, where they are always "in addition to" the default table changes, and the order of the triggers relative to each other can be specified where it would otherwise be ambiguous (POSITION clause.) Triggers may also exist on views, where they are always "instead of" triggers, replacing the default updatable view logic. (Before version 2.1, triggers on views deemed updatable would run in addition to the default logic.) </p><p>Firebird does not raise mutating table exceptions (like Oracle), and triggers will by default both nest and recurse as required (SQL Server allows nesting but not recursion, by default.) Firebird's triggers use NEW and OLD context variables (not Inserted and Deleted tables,) and provide UPDATING, INSERTING, and DELETING flags to indicate the current usage of the trigger. </p> <div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="err">{</span><span class="k">CREATE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">RECREATE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">CREATE</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="err">}</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="err">{</span><span class="k">table</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">view</span><span class="w"> </span><span class="n">name</span><span class="err">}</span> <span class="w"> </span><span class="p">[</span><span class="n">ACTIVE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">INACTIVE</span><span class="p">]</span> <span class="w"> </span><span class="err">{</span><span class="k">BEFORE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">AFTER</span><span class="err">}</span> <span class="w"> </span><span class="err">{</span><span class="k">INSERT</span><span class="w"> </span><span class="p">[</span><span class="k">OR</span><span class="w"> </span><span class="k">UPDATE</span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="k">OR</span><span class="w"> </span><span class="k">DELETE</span><span class="p">]</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="p">[</span><span class="k">OR</span><span class="w"> </span><span class="k">INSERT</span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="k">OR</span><span class="w"> </span><span class="k">DELETE</span><span class="p">]</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">DELETE</span><span class="w"> </span><span class="p">[</span><span class="k">OR</span><span class="w"> </span><span class="k">UPDATE</span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="k">OR</span><span class="w"> </span><span class="k">INSERT</span><span class="p">]</span><span class="w"> </span><span class="err">}</span> <span class="w"> </span><span class="p">[</span><span class="k">POSITION</span><span class="w"> </span><span class="n">n</span><span class="p">]</span><span class="w"> </span><span class="k">AS</span> <span class="k">BEGIN</span> <span class="w"> </span><span class="p">....</span> <span class="k">END</span> </pre></div> <p>As of version 2.1, Firebird additionally supports the following database-level triggers: </p> <ul><li>CONNECT (exceptions raised here prevent the connection from completing)</li> <li>DISCONNECT</li> <li>TRANSACTION START</li> <li>TRANSACTION COMMIT (exceptions raised here prevent the transaction from committing, or preparing if a two-phase commit is involved)</li> <li>TRANSACTION ROLLBACK</li></ul> <p>Database-level triggers can help enforce multi-table constraints, or emulate <a href="/wiki/Materialized_view" title="Materialized view">materialized views</a>. If an exception is raised in a TRANSACTION COMMIT trigger, the changes made by the trigger so far are rolled back and the client application is notified, but the transaction remains active as if COMMIT had never been requested; the client application can continue to make changes and re-request COMMIT. </p><p>Syntax for database triggers: </p> <div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="err">{</span><span class="k">CREATE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">RECREATE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">CREATE</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">ALTER</span><span class="err">}</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="n">name</span> <span class="w"> </span><span class="p">[</span><span class="n">ACTIVE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">INACTIVE</span><span class="p">]</span><span class="w"> </span><span class="k">ON</span> <span class="w"> </span><span class="err">{</span><span class="k">CONNECT</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">DISCONNECT</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">TRANSACTION</span><span class="w"> </span><span class="k">START</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">TRANSACTION</span><span class="w"> </span><span class="k">COMMIT</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">TRANSACTION</span><span class="w"> </span><span class="k">ROLLBACK</span><span class="err">}</span> <span class="w"> </span><span class="p">[</span><span class="k">POSITION</span><span class="w"> </span><span class="n">n</span><span class="p">]</span><span class="w"> </span><span class="k">AS</span> <span class="k">BEGIN</span> <span class="w"> </span><span class="p">.....</span> <span class="k">END</span> </pre></div> <div class="mw-heading mw-heading3"><h3 id="MySQL/MariaDB"><span id="MySQL.2FMariaDB"></span>MySQL/MariaDB</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=8" title="Edit section: MySQL/MariaDB"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Limited support for triggers in the MySQL/MariaDB <a href="/wiki/DBMS" class="mw-redirect" title="DBMS">DBMS</a> was added in the 5.0 version of MySQL, launched in 2005.<sup id="cite_ref-4" class="reference"><a href="#cite_note-4"><span class="cite-bracket">&#91;</span>4<span class="cite-bracket">&#93;</span></a></sup> </p><p>As of version 8.0, they allow for DDL (Data Definition Language) triggers and for DML (Data Manipulation Language) triggers. They also allow either type of DDL trigger (AFTER or BEFORE) to be used to define triggers. They are created by using the clause <i>CREATE TRIGGER</i> and deleted by using the clause <i>DROP TRIGGER</i>. The statement called upon an event happens is defined after the clause <i>FOR EACH ROW</i>, followed by a keyword (<i>SET</i> or <i>BEGIN</i>), which indicates whether what follows is an expression or a statement respectively.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">&#91;</span>5<span class="cite-bracket">&#93;</span></a></sup> </p> <div class="mw-heading mw-heading3"><h3 id="IBM_DB2_LUW">IBM DB2 LUW</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=9" title="Edit section: IBM DB2 LUW"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>IBM DB2 for distributed systems known as DB2 for LUW (LUW means <b>L</b>inux, <b>U</b>nix, <b>W</b>indows) supports three trigger types: Before trigger, After trigger and Instead of trigger. Both statement level and row level triggers are supported. If there are more triggers for same operation on table then firing order is determined by trigger creation data. Since version 9.7 IBM DB2 supports <a href="/w/index.php?title=Autonomous_transactions&amp;action=edit&amp;redlink=1" class="new" title="Autonomous transactions (page does not exist)">autonomous transactions</a>.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">&#91;</span>6<span class="cite-bracket">&#93;</span></a></sup> </p><p>Before trigger is for checking data and deciding if operation should be permitted. If exception is thrown from before trigger then operation is aborted and no data are changed. In DB2 before triggers are read only&#160;— you can't modify data in before triggers. After triggers are designed for post processing after requested change was performed. After triggers can write data into tables and unlike some<sup class="noprint Inline-Template" style="white-space:nowrap;">&#91;<i><a href="/wiki/Wikipedia:Avoid_weasel_words" class="mw-redirect" title="Wikipedia:Avoid weasel words"><span title="The material near this tag possibly uses too vague attribution or weasel words. (June 2012)">which?</span></a></i>&#93;</sup> other databases you can write into any table including table on which trigger operates. Instead of triggers are for making views writeable. </p><p>Triggers are usually programmed in <a href="/wiki/SQL_PL" title="SQL PL">SQL PL</a> language. </p> <div class="mw-heading mw-heading3"><h3 id="SQLite">SQLite</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=10" title="Edit section: SQLite"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="p">[</span><span class="n">TEMP</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">TEMPORARY</span><span class="p">]</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="p">[</span><span class="k">IF</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">EXISTS</span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="n">database_name</span><span class="w"> </span><span class="p">.]</span><span class="w"> </span><span class="k">trigger_name</span> <span class="p">[</span><span class="k">BEFORE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">AFTER</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">INSTEAD</span><span class="w"> </span><span class="k">OF</span><span class="p">]</span><span class="w"> </span><span class="err">{</span><span class="k">DELETE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">INSERT</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="p">[</span><span class="k">OF</span><span class="w"> </span><span class="k">column_name</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="k">column_name</span><span class="p">]...]</span><span class="err">}</span><span class="w"> </span> <span class="k">ON</span><span class="w"> </span><span class="err">{</span><span class="k">table_name</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">view_name</span><span class="err">}</span> <span class="w"> </span><span class="p">[</span><span class="k">FOR</span><span class="w"> </span><span class="k">EACH</span><span class="w"> </span><span class="k">ROW</span><span class="p">]</span><span class="w"> </span><span class="p">[</span><span class="k">WHEN</span><span class="w"> </span><span class="n">condition</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">mandatory</span><span class="w"> </span><span class="p">]</span> <span class="k">BEGIN</span> <span class="w"> </span><span class="p">...</span> <span class="k">END</span> </pre></div> <p><a href="/wiki/SQLite" title="SQLite">SQLite</a> only supports row-level triggers, not statement-level triggers. </p><p><a href="/w/index.php?title=Updateable_views&amp;action=edit&amp;redlink=1" class="new" title="Updateable views (page does not exist)">Updateable views</a>, which are not supported in SQLite, can be emulated with INSTEAD OF triggers. </p> <div class="mw-heading mw-heading3"><h3 id="XML_databases">XML databases</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=11" title="Edit section: XML databases"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>An example of implementation of triggers in non-relational database can be <a href="/wiki/Sedna_(database)" title="Sedna (database)">Sedna</a>, that provides support for triggers based on <a href="/wiki/XQuery" title="XQuery">XQuery</a>. Triggers in Sedna were designed to be analogous to <a href="/wiki/SQL:2003" title="SQL:2003">SQL:2003</a> triggers, but natively base on XML query and update languages (<a href="/wiki/XPath" title="XPath">XPath</a>, <a href="/wiki/XQuery" title="XQuery">XQuery</a> and XML update language). </p><p>A trigger in Sedna is set on any nodes of an XML document stored in database. When these nodes are updated, the trigger automatically executes XQuery queries and updates specified in its body. For example, the following trigger cancels person node deletion if there are any open auctions referenced by this person: </p> <div class="mw-highlight mw-highlight-lang-xql mw-content-ltr" dir="ltr"><pre><span></span><span class="nt">CREATE</span><span class="w"> </span><span class="err">TRIGGER</span><span class="w"> </span><span class="s2">&quot;trigger3&quot;</span> <span class="w"> </span><span class="err">BEFORE</span><span class="w"> </span><span class="err">DELETE</span> <span class="w"> </span><span class="err">ON</span><span class="w"> </span><span class="err">doc(</span><span class="s2">&quot;auction&quot;</span><span class="p">)/</span><span class="nt">site</span><span class="p">//</span><span class="nt">person</span> <span class="w"> </span><span class="err">FOR</span><span class="w"> </span><span class="err">EACH</span><span class="w"> </span><span class="err">NODE</span> <span class="w"> </span><span class="err">DO</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nf">exists</span><span class="p">(</span><span class="nv">$</span><span class="n">WHERE</span><span class="p">//</span><span class="nt">open_auction</span><span class="p">/</span><span class="nt">bidder</span><span class="p">/</span><span class="nt">personref</span><span class="p">/</span><span class="na">@person</span><span class="o">=</span><span class="nv">$</span><span class="n">OLD</span><span class="p">/</span><span class="na">@id</span><span class="p">))</span> <span class="w"> </span><span class="k">then</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="p">)</span> <span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="nv">$</span><span class="n">OLD</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Row_and_statement_level_triggers">Row and statement level triggers</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=12" title="Edit section: Row and statement level triggers"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>To understand how trigger behavior works, you need to be aware of the two main types of triggers; these are Row and Statement level triggers. The distinction between the two is how many times the code within the trigger is executed, and at what time. </p><p>Suppose you have a trigger that is made to be called on an UPDATE to a certain table. Row level triggers would execute once for each row that is affected by the UPDATE. It is important to keep in mind if no rows are affected by the UPDATE command, the trigger <b>will not</b> execute any code within the trigger. Statement level triggers will be called once <b>regardless</b> of how many rows are affected by the UPDATE. Here it is important to note that even if the UPDATE command didn't affect any rows, the code within the trigger will still be executed once. </p><p>Using the BEFORE and AFTER options<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">&#91;</span>7<span class="cite-bracket">&#93;</span></a></sup> determine when the trigger is called. Suppose you have a trigger that is called on an INSERT to a certain table. If your trigger is using the BEFORE option, the code within the trigger will be executed before the INSERT into the table occurs. A common use of the BEFORE trigger is to verify the input values of the INSERT, or modify the values accordingly. Now let's say we have a trigger that uses AFTER instead. The code within the trigger is executed after the INSERT happens to the table. An example use of this trigger is creating an audit history of who has made inserts into the database, keeping track of the changes made. When using these options you need to keep a few things in mind. The BEFORE option does <b>not allow</b> you to modify tables, that is why input validation is a practical use. Using AFTER triggers allows you to modify tables such as inserting into an audit history table. </p><p>When creating a trigger to determine if it is statement or row level simply include the FOR EACH ROW clause for a row level, or omit the clause for a statement level. Be cautious of using additional <a href="/wiki/Insert_(SQL)" title="Insert (SQL)">INSERT</a>/<a href="/wiki/Update_(SQL)" title="Update (SQL)">UPDATE</a>/<a href="/wiki/Delete_(SQL)" title="Delete (SQL)">DELETE</a> commands within your trigger, because trigger <a href="/wiki/Recursion_(computer_science)" title="Recursion (computer science)">recursion</a> is possible, causing unwanted behavior. In the examples below each trigger is modifying a different table, by looking at what is being modified you can see some common applications of when different trigger types are used. </p><p>The following is an Oracle syntax example of a row level trigger that is called AFTER an update FOR EACH ROW affected. This trigger is called on an update to a phone book database. When the trigger is called it adds an entry into a separate table named phone_book_audit. Also take note of triggers being able to take advantage of schema objects like sequences,<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">&#91;</span>8<span class="cite-bracket">&#93;</span></a></sup> in this example audit_id_sequence.nexVal is used to generate unique <a href="/wiki/Primary_key" title="Primary key">primary keys</a> in the phone_book_audit table. </p> <div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="n">phone_book_audit</span> <span class="w"> </span><span class="k">AFTER</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">phone_book</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">EACH</span><span class="w"> </span><span class="k">ROW</span> <span class="k">BEGIN</span> <span class="w"> </span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">phone_book_audit</span><span class="w"> </span> <span class="w"> </span><span class="p">(</span><span class="n">audit_id</span><span class="p">,</span><span class="n">audit_change</span><span class="p">,</span><span class="w"> </span><span class="n">audit_l_name</span><span class="p">,</span><span class="w"> </span><span class="n">audit_f_name</span><span class="p">,</span><span class="w"> </span><span class="n">audit_old_phone_number</span><span class="p">,</span><span class="w"> </span><span class="n">audit_new_phone_number</span><span class="p">,</span><span class="w"> </span><span class="n">audit_date</span><span class="p">)</span><span class="w"> </span> <span class="w"> </span><span class="k">VALUES</span> <span class="w"> </span><span class="p">(</span><span class="n">audit_id_sequence</span><span class="p">.</span><span class="n">nextVal</span><span class="p">,</span><span class="s1">&#39;Update&#39;</span><span class="p">,</span><span class="w"> </span><span class="p">:</span><span class="k">OLD</span><span class="p">.</span><span class="n">last_name</span><span class="p">,</span><span class="w"> </span><span class="p">:</span><span class="k">OLD</span><span class="p">.</span><span class="n">first_name</span><span class="p">,</span><span class="w"> </span><span class="p">:</span><span class="k">OLD</span><span class="p">.</span><span class="n">phone_number</span><span class="p">,</span><span class="w"> </span><span class="p">:</span><span class="k">NEW</span><span class="p">.</span><span class="n">phone_number</span><span class="p">,</span><span class="w"> </span><span class="n">SYSDATE</span><span class="p">);</span> <span class="k">END</span><span class="p">;</span> </pre></div> <p>Now calling an <a href="/wiki/Update_(SQL)" title="Update (SQL)">UPDATE</a> on the phone_book table for people with the last name 'Jones'. </p> <div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">UPDATE</span><span class="w"> </span><span class="n">phone_book</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">phone_number</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;111-111-1111&#39;</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">last_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;Jones&#39;</span><span class="p">;</span> </pre></div> <table class="wikitable"> <tbody><tr> <th>Audit_ID</th> <th>Audit_Change</th> <th>F_Name</th> <th>L_Name</th> <th>New_Phone_Number</th> <th>Old_Phone_Number</th> <th>Audit_Date </th></tr> <tr> <td>1</td> <td>Update</td> <td>Jordan</td> <td>Jones</td> <td>111-111-1111</td> <td>098-765-4321</td> <td>02-MAY-14 </td></tr> <tr> <td>2</td> <td>Update</td> <td>Megan</td> <td>Jones</td> <td>111-111-1111</td> <td>111-222-3456</td> <td>02-MAY-14 </td></tr></tbody></table> <p><br /> Notice that the phone_number_audit table is now populated with two entries. This is due to the database having two entries with the last name of 'Jones'. Since the update modified two separate row values, the created trigger was called twice; once after each modification. </p> <div class="mw-heading mw-heading3"><h3 id="After_-_statement-level_trigger">After - statement-level trigger</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=13" title="Edit section: After - statement-level trigger"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>An Oracle syntax statement trigger that is called after an UPDATE to the phone_book table. When the trigger gets called it makes an insert into phone_book_edit_history table </p> <div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="n">phone_book_history</span> <span class="w"> </span><span class="k">AFTER</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">phone_book</span> <span class="k">BEGIN</span> <span class="w"> </span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">phone_book_edit_history</span><span class="w"> </span> <span class="w"> </span><span class="p">(</span><span class="n">audit_history_id</span><span class="p">,</span><span class="w"> </span><span class="n">username</span><span class="p">,</span><span class="w"> </span><span class="n">modification</span><span class="p">,</span><span class="w"> </span><span class="n">edit_date</span><span class="p">)</span><span class="w"> </span> <span class="w"> </span><span class="k">VALUES</span> <span class="w"> </span><span class="p">(</span><span class="n">audit_history_id_sequence</span><span class="p">.</span><span class="n">nextVal</span><span class="p">,</span><span class="w"> </span><span class="k">USER</span><span class="p">,</span><span class="s1">&#39;Update&#39;</span><span class="p">,</span><span class="w"> </span><span class="n">SYSDATE</span><span class="p">);</span> <span class="k">END</span><span class="p">;</span> </pre></div><p> Now doing exactly the same update as the above example, however this time with a statement level trigger. </p><div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">UPDATE</span><span class="w"> </span><span class="n">phone_book</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">phone_number</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;111-111-1111&#39;</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">last_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;Jones&#39;</span><span class="p">;</span> </pre></div> <table class="wikitable"> <tbody><tr> <th>Audit_History_ID</th> <th>Username</th> <th>Modification</th> <th>Edit_Date </th></tr> <tr> <td>1</td> <td>HAUSCHBC</td> <td>Update</td> <td>02-MAY-14 </td></tr></tbody></table> <p>The result shows that the trigger was only called once, even though the update did change two rows. </p> <div class="mw-heading mw-heading3"><h3 id="Before_each_-_row-level_trigger">Before each - row-level trigger</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=14" title="Edit section: Before each - row-level trigger"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>This example demonstrates a BEFORE EACH ROW trigger that modifies the INSERT using a WHEN conditional. If the last name is larger than 10 letters, using the SUBSTR function<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">&#91;</span>9<span class="cite-bracket">&#93;</span></a></sup> we change the last_name column value to an abbreviation. </p> <div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="n">phone_book_insert</span> <span class="w"> </span><span class="k">BEFORE</span><span class="w"> </span><span class="k">INSERT</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">phone_book</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="k">EACH</span><span class="w"> </span><span class="k">ROW</span> <span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="p">(</span><span class="k">LENGTH</span><span class="p">(</span><span class="k">new</span><span class="p">.</span><span class="n">last_name</span><span class="p">)</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">10</span><span class="p">)</span> <span class="k">BEGIN</span> <span class="w"> </span><span class="p">:</span><span class="k">new</span><span class="p">.</span><span class="n">last_name</span><span class="w"> </span><span class="p">:</span><span class="o">=</span><span class="w"> </span><span class="n">SUBSTR</span><span class="p">(:</span><span class="k">new</span><span class="p">.</span><span class="n">last_name</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">1</span><span class="p">);</span> <span class="k">END</span><span class="p">;</span> </pre></div> <p>Now performing an INSERT of someone with a large name. </p> <div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">phone_book</span><span class="w"> </span><span class="k">VALUES</span> <span class="p">(</span><span class="mi">6</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;VeryVeryLongLastName&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;Erin&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;Minneapolis&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;MN&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;989 University Drive&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;123-222-4456&#39;</span><span class="p">,</span><span class="w"> </span><span class="mi">55408</span><span class="p">,</span><span class="w"> </span><span class="n">TO_DATE</span><span class="p">(</span><span class="s1">&#39;11/21/1991&#39;</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;MM/DD/YYYY&#39;</span><span class="p">));</span> </pre></div> <table class="wikitable"> <tbody><tr> <th>Person_ID</th> <th>Last_Name</th> <th>First_Name</th> <th>City</th> <th>State_Abbreviation</th> <th>Address</th> <th>Phone_Number</th> <th>Zip_code</th> <th>DOB </th></tr> <tr> <td>6</td> <td>V</td> <td>Erin</td> <td>Minneapolis</td> <td>MN</td> <td>989 University Drive</td> <td>123-222-4456</td> <td>55408</td> <td>21-NOV-91 </td></tr></tbody></table> <p>The trigger worked as per the result above, modifying the value of the INSERT <b>before</b> it was executed. </p> <div class="mw-heading mw-heading3"><h3 id="Before_-_statement-level_trigger">Before - statement-level trigger</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=15" title="Edit section: Before - statement-level trigger"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Using a BEFORE statement trigger is particularly useful when enforcing database restrictions.<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">&#91;</span>10<span class="cite-bracket">&#93;</span></a></sup> This example demonstrate how to enforce a restriction upon someone named "SOMEUSER" on the table phone_book. </p> <div class="mw-highlight mw-highlight-lang-sql mw-content-ltr" dir="ltr"><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="n">hauschbc</span><span class="w"> </span> <span class="w"> </span><span class="k">BEFORE</span><span class="w"> </span><span class="k">INSERT</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">SOMEUSER</span><span class="p">.</span><span class="n">phone_book</span> <span class="k">BEGIN</span> <span class="w"> </span><span class="n">RAISE_APPLICATION_ERROR</span><span class="w"> </span><span class="p">(</span> <span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="o">-</span><span class="mi">20050</span><span class="p">,</span> <span class="w"> </span><span class="n">msg</span><span class="w"> </span><span class="o">=&gt;</span><span class="w"> </span><span class="s1">&#39;Error message goes here.&#39;</span><span class="p">);</span> <span class="k">END</span><span class="p">;</span> </pre></div> <p>Now, when "SOMEUSER" is logged in after attempting any INSERT this error message will show: </p> <pre>SQL Error: ORA-20050: Error message goes here. </pre> <p>Custom errors such as this one has a restriction on what the num variable can be defined as. Because of the numerous other pre-defined errors this variable must be in the range of −20000 to −20999. </p> <div class="mw-heading mw-heading2"><h2 id="References">References</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=16" title="Edit section: References"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <style data-mw-deduplicate="TemplateStyles:r1239543626">.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}</style><div class="reflist"> <div class="mw-references-wrap"><ol class="references"> <li id="cite_note-1"><span class="mw-cite-backlink"><b><a href="#cite_ref-1">^</a></b></span> <span class="reference-text"> <style data-mw-deduplicate="TemplateStyles:r1238218222">.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}</style><cite id="CITEREFNandaBurleson2003" class="citation book cs1">Nanda, Arup; Burleson, Donald K. (2003). "9". In Burleson, Donald K. (ed.). <a rel="nofollow" class="external text" href="https://books.google.com/books?id=Gm2hzeWhou0C"><i>Oracle Privacy Security Auditing: Includes Federal Law Compliance with HIPAA, Sarbanes Oxley and the Gramm Leach Bliley Act GLB</i></a>. Oracle in-focus series. Vol.&#160;47. Kittrell, North Carolina: Rampant TechPress. p.&#160;511. <a href="/wiki/ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&#160;<a href="/wiki/Special:BookSources/9780972751391" title="Special:BookSources/9780972751391"><bdi>9780972751391</bdi></a><span class="reference-accessdate">. Retrieved <span class="nowrap">2018-04-17</span></span>. <q>[...] system-level triggers [...] were introduced in Oracle8i. [...] system-level triggers are fired at specific system events such as logon, logoff, database startup, DDL execution, and servererror [...].</q></cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=bookitem&amp;rft.atitle=9&amp;rft.btitle=Oracle+Privacy+Security+Auditing%3A+Includes+Federal+Law+Compliance+with+HIPAA%2C+Sarbanes+Oxley+and+the+Gramm+Leach+Bliley+Act+GLB&amp;rft.place=Kittrell%2C+North+Carolina&amp;rft.series=Oracle+in-focus+series&amp;rft.pages=511&amp;rft.pub=Rampant+TechPress&amp;rft.date=2003&amp;rft.isbn=9780972751391&amp;rft.aulast=Nanda&amp;rft.aufirst=Arup&amp;rft.au=Burleson%2C+Donald+K.&amp;rft_id=https%3A%2F%2Fbooks.google.com%2Fbooks%3Fid%3DGm2hzeWhou0C&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ADatabase+trigger" class="Z3988"></span></span> </li> <li id="cite_note-2"><span class="mw-cite-backlink"><b><a href="#cite_ref-2">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.microsoft.com/en-us/sql/relational-databases/triggers/ddl-events?view=sql-server-ver15">"DDL Events - SQL Server"</a>. 15 March 2023.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=DDL+Events+-+SQL+Server&amp;rft.date=2023-03-15&amp;rft_id=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fsql%2Frelational-databases%2Ftriggers%2Fddl-events%3Fview%3Dsql-server-ver15&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ADatabase+trigger" class="Z3988"></span></span> </li> <li id="cite_note-3"><span class="mw-cite-backlink"><b><a href="#cite_ref-3">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.postgresql.org/docs/9.0/sql-createtrigger.html">"PostgreSQL: Documentation: 9.0: CREATE TRIGGER"</a>. <i>www.postgresql.org</i>. 8 October 2015.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=www.postgresql.org&amp;rft.atitle=PostgreSQL%3A+Documentation%3A+9.0%3A+CREATE+TRIGGER&amp;rft.date=2015-10-08&amp;rft_id=https%3A%2F%2Fwww.postgresql.org%2Fdocs%2F9.0%2Fsql-createtrigger.html&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ADatabase+trigger" class="Z3988"></span></span> </li> <li id="cite_note-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-4">^</a></b></span> <span class="reference-text">MySQL 5.0 Reference Manual. <a rel="nofollow" class="external text" href="https://downloads.mysql.com/docs/refman-5.0-en.pdf">"Triggers. MySQL 5.0 added limited support for triggers"</a>, <i><a href="/wiki/Oracle_Corporation" title="Oracle Corporation">Oracle Corporation</a></i>, Retrieved on 4 March 2020.</span> </li> <li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html">"MySQL&#160;:: MySQL 8.0 Reference Manual&#160;:: 25.3.1 Trigger Syntax and Examples"</a>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=MySQL+%3A%3A+MySQL+8.0+Reference+Manual+%3A%3A+25.3.1+Trigger+Syntax+and+Examples&amp;rft_id=https%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F8.0%2Fen%2Ftrigger-syntax.html&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ADatabase+trigger" class="Z3988"></span></span> </li> <li id="cite_note-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-6">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://www.ibm.com/developerworks/data/library/techarticle/dm-0907autonomoustransactions/index.html">"Autonomous transactions"</a>. <i>www.ibm.com</i>. July 30, 2009.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=www.ibm.com&amp;rft.atitle=Autonomous+transactions&amp;rft.date=2009-07-30&amp;rft_id=http%3A%2F%2Fwww.ibm.com%2Fdeveloperworks%2Fdata%2Flibrary%2Ftecharticle%2Fdm-0907autonomoustransactions%2Findex.html&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ADatabase+trigger" class="Z3988"></span></span> </li> <li id="cite_note-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-7">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.oracle.com/cd/B25329_01/doc/appdev.102/b25108/xedev_triggers.htm">"6 Using Triggers"</a>. <i>docs.oracle.com</i>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=docs.oracle.com&amp;rft.atitle=6+Using+Triggers&amp;rft_id=https%3A%2F%2Fdocs.oracle.com%2Fcd%2FB25329_01%2Fdoc%2Fappdev.102%2Fb25108%2Fxedev_triggers.htm&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ADatabase+trigger" class="Z3988"></span></span> </li> <li id="cite_note-8"><span class="mw-cite-backlink"><b><a href="#cite_ref-8">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="http://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_6014.htm">"Oracle's Documentation on Sequences"</a>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20111201225844/http://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_6014.htm">Archived</a> from the original on 2011-12-01.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=Oracle%27s+Documentation+on+Sequences&amp;rft_id=http%3A%2F%2Fdocs.oracle.com%2Fcd%2FB12037_01%2Fserver.101%2Fb10759%2Fstatements_6014.htm&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ADatabase+trigger" class="Z3988"></span></span> </li> <li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://www.databasestar.com/oracle-sql-functions/">"Oracle SQL Functions – The Complete List"</a>. December 26, 2014.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rft.genre=unknown&amp;rft.btitle=Oracle+SQL+Functions+%E2%80%93+The+Complete+List&amp;rft.date=2014-12-26&amp;rft_id=https%3A%2F%2Fwww.databasestar.com%2Foracle-sql-functions%2F&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ADatabase+trigger" class="Z3988"></span></span> </li> <li id="cite_note-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-10">^</a></b></span> <span class="reference-text"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1238218222" /><cite class="citation web cs1"><a rel="nofollow" class="external text" href="https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/create_trigger.htm">"Database PL/SQL Language Reference"</a>. <i>docs.oracle.com</i>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=unknown&amp;rft.jtitle=docs.oracle.com&amp;rft.atitle=Database+PL%2FSQL+Language+Reference&amp;rft_id=https%3A%2F%2Fdocs.oracle.com%2Fcd%2FB28359_01%2Fappdev.111%2Fb28370%2Fcreate_trigger.htm&amp;rfr_id=info%3Asid%2Fen.wikipedia.org%3ADatabase+trigger" class="Z3988"></span></span> </li> </ol></div></div> <div class="mw-heading mw-heading2"><h2 id="External_links">External links</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Database_trigger&amp;action=edit&amp;section=17" title="Edit section: External links"><span>edit</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="http://msdn2.microsoft.com/en-us/library/aa258846(SQL.80).aspx">Microsoft SQL Server DROP TRIGGER</a></li> <li><a rel="nofollow" class="external text" href="http://dev.mysql.com/doc/refman/5.6/en/triggers.html">MySQL Database triggers</a></li> <li><a rel="nofollow" class="external text" href="http://dev.mysql.com/doc/refman/5.6/en/create-trigger.html">MySQL DB Create Triggers</a></li> <li><a rel="nofollow" class="external text" href="http://publib.boulder.ibm.com/infocenter/db2luw/v9/topic/com.ibm.db2.udb.admin.doc/doc/r0000931.htm">DB2 CREATE TRIGGER statement</a></li> <li><a rel="nofollow" class="external text" href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/statements_7004.htm#sthref7885">Oracle CREATE TRIGGER</a></li> <li><a rel="nofollow" class="external text" href="http://www.postgresql.org/docs/8.2/static/sql-createtrigger.html">PostgreSQL CREATE TRIGGER</a></li> <li><a rel="nofollow" class="external text" href="http://www.akadia.com/services/ora_mutating_table_problems.html">Oracle Mutating Table Problems with DELETE CASCADE</a></li> <li><a rel="nofollow" class="external text" href="http://www.sqlite.org/lang_createtrigger.html">SQLite Query Language: CREATE TRIGGER</a></li> <li><a rel="nofollow" class="external text" href="http://docs.oracle.com/cd/B19306_01/server.102/b14220/triggers.htm#i2013">Oracle's Documentation on Triggers</a></li></ul> <div class="navbox-styles"><style data-mw-deduplicate="TemplateStyles:r1129693374">.mw-parser-output .hlist dl,.mw-parser-output .hlist ol,.mw-parser-output .hlist ul{margin:0;padding:0}.mw-parser-output .hlist dd,.mw-parser-output .hlist dt,.mw-parser-output .hlist li{margin:0;display:inline}.mw-parser-output .hlist.inline,.mw-parser-output .hlist.inline dl,.mw-parser-output .hlist.inline ol,.mw-parser-output .hlist.inline ul,.mw-parser-output .hlist dl dl,.mw-parser-output .hlist dl ol,.mw-parser-output .hlist dl ul,.mw-parser-output .hlist ol dl,.mw-parser-output .hlist ol ol,.mw-parser-output .hlist ol ul,.mw-parser-output .hlist ul dl,.mw-parser-output .hlist ul ol,.mw-parser-output .hlist ul ul{display:inline}.mw-parser-output .hlist .mw-empty-li{display:none}.mw-parser-output .hlist dt::after{content:": "}.mw-parser-output .hlist dd::after,.mw-parser-output .hlist li::after{content:" · ";font-weight:bold}.mw-parser-output .hlist dd:last-child::after,.mw-parser-output .hlist dt:last-child::after,.mw-parser-output .hlist li:last-child::after{content:none}.mw-parser-output .hlist dd dd:first-child::before,.mw-parser-output .hlist dd dt:first-child::before,.mw-parser-output .hlist dd li:first-child::before,.mw-parser-output .hlist dt dd:first-child::before,.mw-parser-output .hlist dt dt:first-child::before,.mw-parser-output .hlist dt li:first-child::before,.mw-parser-output .hlist li dd:first-child::before,.mw-parser-output .hlist li dt:first-child::before,.mw-parser-output .hlist li li:first-child::before{content:" (";font-weight:normal}.mw-parser-output .hlist dd dd:last-child::after,.mw-parser-output .hlist dd dt:last-child::after,.mw-parser-output .hlist dd li:last-child::after,.mw-parser-output .hlist dt dd:last-child::after,.mw-parser-output .hlist dt dt:last-child::after,.mw-parser-output .hlist dt li:last-child::after,.mw-parser-output .hlist li dd:last-child::after,.mw-parser-output .hlist li dt:last-child::after,.mw-parser-output .hlist li li:last-child::after{content:")";font-weight:normal}.mw-parser-output .hlist ol{counter-reset:listitem}.mw-parser-output .hlist ol>li{counter-increment:listitem}.mw-parser-output .hlist ol>li::before{content:" "counter(listitem)"\a0 "}.mw-parser-output .hlist dd ol>li:first-child::before,.mw-parser-output .hlist dt ol>li:first-child::before,.mw-parser-output .hlist li ol>li:first-child::before{content:" ("counter(listitem)"\a0 "}</style><style data-mw-deduplicate="TemplateStyles:r1236075235">.mw-parser-output .navbox{box-sizing:border-box;border:1px solid #a2a9b1;width:100%;clear:both;font-size:88%;text-align:center;padding:1px;margin:1em auto 0}.mw-parser-output .navbox .navbox{margin-top:0}.mw-parser-output .navbox+.navbox,.mw-parser-output .navbox+.navbox-styles+.navbox{margin-top:-1px}.mw-parser-output .navbox-inner,.mw-parser-output .navbox-subgroup{width:100%}.mw-parser-output .navbox-group,.mw-parser-output .navbox-title,.mw-parser-output .navbox-abovebelow{padding:0.25em 1em;line-height:1.5em;text-align:center}.mw-parser-output .navbox-group{white-space:nowrap;text-align:right}.mw-parser-output .navbox,.mw-parser-output .navbox-subgroup{background-color:#fdfdfd}.mw-parser-output .navbox-list{line-height:1.5em;border-color:#fdfdfd}.mw-parser-output .navbox-list-with-group{text-align:left;border-left-width:2px;border-left-style:solid}.mw-parser-output tr+tr>.navbox-abovebelow,.mw-parser-output tr+tr>.navbox-group,.mw-parser-output tr+tr>.navbox-image,.mw-parser-output tr+tr>.navbox-list{border-top:2px solid #fdfdfd}.mw-parser-output .navbox-title{background-color:#ccf}.mw-parser-output .navbox-abovebelow,.mw-parser-output .navbox-group,.mw-parser-output .navbox-subgroup .navbox-title{background-color:#ddf}.mw-parser-output .navbox-subgroup .navbox-group,.mw-parser-output .navbox-subgroup .navbox-abovebelow{background-color:#e6e6ff}.mw-parser-output .navbox-even{background-color:#f7f7f7}.mw-parser-output .navbox-odd{background-color:transparent}.mw-parser-output .navbox .hlist td dl,.mw-parser-output .navbox .hlist td ol,.mw-parser-output .navbox .hlist td ul,.mw-parser-output .navbox td.hlist dl,.mw-parser-output .navbox td.hlist ol,.mw-parser-output .navbox td.hlist ul{padding:0.125em 0}.mw-parser-output .navbox .navbar{display:block;font-size:100%}.mw-parser-output .navbox-title .navbar{float:left;text-align:left;margin-right:0.5em}body.skin--responsive .mw-parser-output .navbox-image img{max-width:none!important}@media print{body.ns-0 .mw-parser-output .navbox{display:none!important}}</style></div><div role="navigation" class="navbox" aria-labelledby="Database_management_systems327" style="padding:3px"><table class="nowraplinks hlist mw-collapsible autocollapse navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="col" class="navbox-title" colspan="2"><link rel="mw-deduplicated-inline-style" href="mw-data:TemplateStyles:r1129693374" /><style data-mw-deduplicate="TemplateStyles:r1239400231">.mw-parser-output .navbar{display:inline;font-size:88%;font-weight:normal}.mw-parser-output .navbar-collapse{float:left;text-align:left}.mw-parser-output .navbar-boxtext{word-spacing:0}.mw-parser-output .navbar ul{display:inline-block;white-space:nowrap;line-height:inherit}.mw-parser-output .navbar-brackets::before{margin-right:-0.125em;content:"[ "}.mw-parser-output .navbar-brackets::after{margin-left:-0.125em;content:" ]"}.mw-parser-output .navbar li{word-spacing:-0.125em}.mw-parser-output .navbar a>span,.mw-parser-output .navbar a>abbr{text-decoration:inherit}.mw-parser-output .navbar-mini abbr{font-variant:small-caps;border-bottom:none;text-decoration:none;cursor:inherit}.mw-parser-output .navbar-ct-full{font-size:114%;margin:0 7em}.mw-parser-output .navbar-ct-mini{font-size:114%;margin:0 4em}html.skin-theme-clientpref-night .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}@media(prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .navbar li a abbr{color:var(--color-base)!important}}@media print{.mw-parser-output .navbar{display:none!important}}</style><div class="navbar plainlinks hlist navbar-mini"><ul><li class="nv-view"><a href="/wiki/Template:Databases" title="Template:Databases"><abbr title="View this template">v</abbr></a></li><li class="nv-talk"><a href="/wiki/Template_talk:Databases" title="Template talk:Databases"><abbr title="Discuss this template">t</abbr></a></li><li class="nv-edit"><a href="/wiki/Special:EditPage/Template:Databases" title="Special:EditPage/Template:Databases"><abbr title="Edit this template">e</abbr></a></li></ul></div><div id="Database_management_systems327" style="font-size:114%;margin:0 4em"><a href="/wiki/Database" title="Database">Database management systems</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1%">Types</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Object_database" title="Object database">Object-oriented</a> <ul><li><a href="/wiki/Comparison_of_object_database_management_systems" title="Comparison of object database management systems">comparison</a></li></ul></li> <li><a href="/wiki/Relational_database" title="Relational database">Relational</a> <ul><li><a href="/wiki/List_of_relational_database_management_systems" title="List of relational database management systems">list</a></li> <li><a href="/wiki/Comparison_of_relational_database_management_systems" title="Comparison of relational database management systems">comparison</a></li></ul></li> <li><a href="/wiki/Key%E2%80%93value_database" title="Key–value database">Key–value</a></li> <li><a href="/wiki/Column-oriented_DBMS" class="mw-redirect" title="Column-oriented DBMS">Column-oriented</a> <ul><li><a href="/wiki/List_of_column-oriented_DBMSes" title="List of column-oriented DBMSes">list</a></li></ul></li> <li><a href="/wiki/Document-oriented_database" title="Document-oriented database">Document-oriented</a></li> <li><a href="/wiki/Wide-column_store" title="Wide-column store">Wide-column store</a></li> <li><a href="/wiki/Graph_database" title="Graph database">Graph</a></li> <li><a href="/wiki/NoSQL" title="NoSQL">NoSQL</a></li> <li><a href="/wiki/NewSQL" title="NewSQL">NewSQL</a></li> <li><a href="/wiki/In-memory_database" title="In-memory database">In-memory</a> <ul><li><a href="/wiki/List_of_in-memory_databases" title="List of in-memory databases">list</a></li></ul></li> <li><a href="/wiki/Multi-model_database" title="Multi-model database">Multi-model</a> <ul><li><a href="/wiki/Comparison_of_multi-model_databases" title="Comparison of multi-model databases">comparison</a></li></ul></li> <li><a href="/wiki/Cloud_database" title="Cloud database">Cloud</a></li> <li><a href="/wiki/Blockchain-based_database" title="Blockchain-based database">Blockchain-based database</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Concepts</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Database" title="Database">Database</a></li> <li><a href="/wiki/ACID" title="ACID">ACID</a></li> <li><a href="/wiki/Armstrong%27s_axioms" title="Armstrong&#39;s axioms">Armstrong's axioms</a></li> <li><a href="/wiki/Codd%27s_12_rules" title="Codd&#39;s 12 rules">Codd's 12 rules</a></li> <li><a href="/wiki/CAP_theorem" title="CAP theorem">CAP theorem</a></li> <li><a href="/wiki/Create,_read,_update_and_delete" title="Create, read, update and delete">CRUD</a></li> <li><a href="/wiki/Null_(SQL)" title="Null (SQL)">Null</a></li> <li><a href="/wiki/Candidate_key" title="Candidate key">Candidate key</a></li> <li><a href="/wiki/Foreign_key" title="Foreign key">Foreign key</a></li> <li><a href="/wiki/PACELC_design_principle" title="PACELC design principle">PACELC design principle</a></li> <li><a href="/wiki/Superkey" title="Superkey">Superkey</a></li> <li><a href="/wiki/Surrogate_key" title="Surrogate key">Surrogate key</a></li> <li><a href="/wiki/Unique_key" title="Unique key">Unique key</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Objects</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Relation_(database)" title="Relation (database)">Relation</a> <ul><li><a href="/wiki/Table_(database)" title="Table (database)">table</a></li> <li><a href="/wiki/Column_(database)" title="Column (database)">column</a></li> <li><a href="/wiki/Row_(database)" title="Row (database)">row</a></li></ul></li> <li><a href="/wiki/View_(SQL)" title="View (SQL)">View</a></li> <li><a href="/wiki/Database_transaction" title="Database transaction">Transaction</a></li> <li><a href="/wiki/Transaction_log" title="Transaction log">Transaction log</a></li> <li><a class="mw-selflink selflink">Trigger</a></li> <li><a href="/wiki/Database_index" title="Database index">Index</a></li> <li><a href="/wiki/Stored_procedure" title="Stored procedure">Stored procedure</a></li> <li><a href="/wiki/Cursor_(databases)" title="Cursor (databases)">Cursor</a></li> <li><a href="/wiki/Partition_(database)" title="Partition (database)">Partition</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Components</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Concurrency_control" title="Concurrency control">Concurrency control</a></li> <li><a href="/wiki/Data_dictionary" title="Data dictionary">Data dictionary</a></li> <li><a href="/wiki/Java_Database_Connectivity" title="Java Database Connectivity">JDBC</a></li> <li><a href="/wiki/XQuery_API_for_Java" title="XQuery API for Java">XQJ</a></li> <li><a href="/wiki/Open_Database_Connectivity" title="Open Database Connectivity">ODBC</a></li> <li><a href="/wiki/Query_language" title="Query language">Query language</a></li> <li><a href="/wiki/Query_optimization" title="Query optimization">Query optimizer</a></li> <li><a href="/wiki/Query_Rewriting" class="mw-redirect" title="Query Rewriting">Query rewriting system</a></li> <li><a href="/wiki/Query_plan" title="Query plan">Query plan</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Functions</th><td class="navbox-list-with-group navbox-list navbox-odd" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Database_administration" title="Database administration">Administration</a></li> <li><a href="/wiki/Query_optimization" title="Query optimization">Query optimization</a></li> <li><a href="/wiki/Replication_(computing)#DATABASE" title="Replication (computing)">Replication</a></li> <li><a href="/wiki/Shard_(database_architecture)" title="Shard (database architecture)">Sharding</a></li></ul> </div></td></tr><tr><th scope="row" class="navbox-group" style="width:1%">Related topics</th><td class="navbox-list-with-group navbox-list navbox-even" style="width:100%;padding:0"><div style="padding:0 0.25em"> <ul><li><a href="/wiki/Database_model" title="Database model">Database models</a></li> <li><a href="/wiki/Database_normalization" title="Database normalization">Database normalization</a></li> <li><a href="/wiki/Database_storage_structures" title="Database storage structures">Database storage</a></li> <li><a href="/wiki/Distributed_database" title="Distributed database">Distributed database</a></li> <li><a href="/wiki/Federated_database_system" title="Federated database system">Federated database system</a></li> <li><a href="/wiki/Referential_integrity" title="Referential integrity">Referential integrity</a></li> <li><a href="/wiki/Relational_algebra" title="Relational algebra">Relational algebra</a></li> <li><a href="/wiki/Relational_calculus" title="Relational calculus">Relational calculus</a></li> <li><a href="/wiki/Relational_model" title="Relational model">Relational model</a></li> <li><a href="/wiki/Object%E2%80%93relational_database" title="Object–relational database">Object–relational database</a></li> <li><a href="/wiki/Transaction_processing" title="Transaction processing">Transaction processing</a></li></ul> </div></td></tr><tr><td class="navbox-abovebelow" colspan="2"><div> <ul><li><span class="noviewer" typeof="mw:File"><span title="Category"><img alt="" src="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/16px-Symbol_category_class.svg.png" decoding="async" width="16" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/23px-Symbol_category_class.svg.png 1.5x, //upload.wikimedia.org/wikipedia/en/thumb/9/96/Symbol_category_class.svg/31px-Symbol_category_class.svg.png 2x" data-file-width="180" data-file-height="185" /></span></span> <a href="/wiki/Category:Database_management_systems" title="Category:Database management systems">Category</a></li> <li><span class="noviewer" typeof="mw:File"><span title="Outline"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/4/41/Global_thinking.svg/20px-Global_thinking.svg.png" decoding="async" width="10" height="16" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/4/41/Global_thinking.svg/40px-Global_thinking.svg.png 2x" data-file-width="130" data-file-height="200" /></span></span> <a href="/wiki/Outline_of_databases" title="Outline of databases">Outline</a></li></ul> </div></td></tr></tbody></table></div> <!-- NewPP limit report Parsed by mw‐api‐int.eqiad.main‐bdd889d6‐87w97 Cached time: 20250321122754 Cache expiry: 2592000 Reduced expiry: false Complications: [vary‐revision‐sha1, show‐toc] CPU time usage: 0.321 seconds Real time usage: 0.439 seconds Preprocessor visited node count: 928/1000000 Post‐expand include size: 30243/2097152 bytes Template argument size: 1311/2097152 bytes Highest expansion depth: 12/100 Expensive parser function count: 14/500 Unstrip recursion depth: 1/20 Unstrip post‐expand size: 60499/5000000 bytes Lua time usage: 0.198/10.000 seconds Lua memory usage: 5394952/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 368.565 1 -total 37.19% 137.060 1 Template:Reflist 26.39% 97.270 1 Template:Databases 25.72% 94.794 1 Template:Navbox 24.31% 89.580 1 Template:Cite_book 21.90% 80.712 1 Template:Short_description 13.39% 49.356 2 Template:Pagetype 11.46% 42.229 1 Template:Which 10.23% 37.702 1 Template:Fix 7.93% 29.214 8 Template:Cite_web --> <!-- Saved in parser cache with key enwiki:pcache:1384316:|#|:idhash:canonical and timestamp 20250321122754 and revision id 1272814768. Rendering was triggered because: api-parse --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?useformat=desktop&amp;type=1x1&amp;usesul3=0" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Retrieved from "<a dir="ltr" href="https://en.wikipedia.org/w/index.php?title=Database_trigger&amp;oldid=1272814768">https://en.wikipedia.org/w/index.php?title=Database_trigger&amp;oldid=1272814768</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Help:Category" title="Help:Category">Categories</a>: <ul><li><a href="/wiki/Category:Database_management_systems" title="Category:Database management systems">Database management systems</a></li><li><a href="/wiki/Category:Events_(computing)" title="Category:Events (computing)">Events (computing)</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Hidden categories: <ul><li><a href="/wiki/Category:Articles_with_short_description" title="Category:Articles with short description">Articles with short description</a></li><li><a href="/wiki/Category:Short_description_is_different_from_Wikidata" title="Category:Short description is different from Wikidata">Short description is different from Wikidata</a></li><li><a href="/wiki/Category:All_articles_with_specifically_marked_weasel-worded_phrases" title="Category:All articles with specifically marked weasel-worded phrases">All articles with specifically marked weasel-worded phrases</a></li><li><a href="/wiki/Category:Articles_with_specifically_marked_weasel-worded_phrases_from_June_2012" title="Category:Articles with specifically marked weasel-worded phrases from June 2012">Articles with specifically marked weasel-worded phrases from June 2012</a></li><li><a href="/wiki/Category:Articles_with_example_SQL_code" title="Category:Articles with example SQL code">Articles with example SQL code</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> This page was last edited on 30 January 2025, at 08:33<span class="anonymous-show">&#160;(UTC)</span>.</li> <li id="footer-info-copyright">Text is available under the <a href="/wiki/Wikipedia:Text_of_the_Creative_Commons_Attribution-ShareAlike_4.0_International_License" title="Wikipedia:Text of the Creative Commons Attribution-ShareAlike 4.0 International License">Creative Commons Attribution-ShareAlike 4.0 License</a>; additional terms may apply. By using this site, you agree to the <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use" class="extiw" title="foundation:Special:MyLanguage/Policy:Terms of Use">Terms of Use</a> and <a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy" class="extiw" title="foundation:Special:MyLanguage/Policy:Privacy policy">Privacy Policy</a>. Wikipedia® is a registered trademark of the <a rel="nofollow" class="external text" href="https://wikimediafoundation.org/">Wikimedia Foundation, Inc.</a>, a non-profit organization.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/Wikipedia:About">About Wikipedia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikipedia:General_disclaimer">Disclaimers</a></li> <li id="footer-places-contact"><a href="//en.wikipedia.org/wiki/Wikipedia:Contact_us">Contact Wikipedia</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Code of Conduct</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Developers</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/en.wikipedia.org">Statistics</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Cookie statement</a></li> <li id="footer-places-mobileview"><a href="//en.m.wikipedia.org/w/index.php?title=Database_trigger&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Mobile view</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><picture><source media="(min-width: 500px)" srcset="/static/images/footer/wikimedia-button.svg" width="84" height="29"><img src="/static/images/footer/wikimedia.svg" width="25" height="25" alt="Wikimedia Foundation" lang="en" loading="lazy"></picture></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><picture><source media="(min-width: 500px)" srcset="/w/resources/assets/poweredby_mediawiki.svg" width="88" height="31"><img src="/w/resources/assets/mediawiki_compact.svg" alt="Powered by MediaWiki" lang="en" width="25" height="25" loading="lazy"></picture></a></li> </ul> </footer> </div> </div> </div> <div class="vector-header-container vector-sticky-header-container"> <div id="vector-sticky-header" class="vector-sticky-header"> <div class="vector-sticky-header-start"> <div class="vector-sticky-header-icon-start vector-button-flush-left vector-button-flush-right" aria-hidden="true"> <button class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-sticky-header-search-toggle" tabindex="-1" data-event-name="ui.vector-sticky-search-form.icon"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Search</span> </button> </div> <div role="search" class="vector-search-box-vue vector-search-box-show-thumbnail vector-search-box"> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail"> <form action="/w/index.php" id="vector-sticky-search-form" class="cdx-search-input cdx-search-input--has-end-button"> <div class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Search Wikipedia"> <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Special:Search"> </div> <button class="cdx-button cdx-search-input__end-button">Search</button> </form> </div> </div> </div> <div class="vector-sticky-header-context-bar"> <nav aria-label="Contents" class="vector-toc-landmark"> <div id="vector-sticky-header-toc" class="vector-dropdown mw-portlet mw-portlet-sticky-header-toc vector-sticky-header-toc vector-button-flush-left" > <input type="checkbox" id="vector-sticky-header-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-sticky-header-toc" class="vector-dropdown-checkbox " aria-label="Toggle the table of contents" > <label id="vector-sticky-header-toc-label" for="vector-sticky-header-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Toggle the table of contents</span> </label> <div class="vector-dropdown-content"> <div id="vector-sticky-header-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div class="vector-sticky-header-context-bar-primary" aria-hidden="true" ><span class="mw-page-title-main">Database trigger</span></div> </div> </div> <div class="vector-sticky-header-end" aria-hidden="true"> <div class="vector-sticky-header-icons"> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-talk-sticky-header" tabindex="-1" data-event-name="talk-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbles mw-ui-icon-wikimedia-speechBubbles"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-subject-sticky-header" tabindex="-1" data-event-name="subject-sticky-header"><span class="vector-icon mw-ui-icon-article mw-ui-icon-wikimedia-article"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-history-sticky-header" tabindex="-1" data-event-name="history-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-history mw-ui-icon-wikimedia-wikimedia-history"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only mw-watchlink" id="ca-watchstar-sticky-header" tabindex="-1" data-event-name="watch-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-star mw-ui-icon-wikimedia-wikimedia-star"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-edit-sticky-header" tabindex="-1" data-event-name="wikitext-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-wikiText mw-ui-icon-wikimedia-wikimedia-wikiText"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-ve-edit-sticky-header" tabindex="-1" data-event-name="ve-edit-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-edit mw-ui-icon-wikimedia-wikimedia-edit"></span> <span></span> </a> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only" id="ca-viewsource-sticky-header" tabindex="-1" data-event-name="ve-edit-protected-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-editLock mw-ui-icon-wikimedia-wikimedia-editLock"></span> <span></span> </a> </div> <div class="vector-sticky-header-buttons"> <button class="cdx-button cdx-button--weight-quiet mw-interlanguage-selector" id="p-lang-btn-sticky-header" tabindex="-1" data-event-name="ui.dropdown-p-lang-btn-sticky-header"><span class="vector-icon mw-ui-icon-wikimedia-language mw-ui-icon-wikimedia-wikimedia-language"></span> <span>26 languages</span> </button> <a href="#" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive" id="ca-addsection-sticky-header" tabindex="-1" data-event-name="addsection-sticky-header"><span class="vector-icon mw-ui-icon-speechBubbleAdd-progressive mw-ui-icon-wikimedia-speechBubbleAdd-progressive"></span> <span>Add topic</span> </a> </div> <div class="vector-sticky-header-icon-end"> <div class="vector-user-links"> </div> </div> </div> </div> </div> <div class="mw-portlet mw-portlet-dock-bottom emptyPortlet" id="p-dock-bottom"> <ul> </ul> </div> <script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.eqiad.main-58c4b96c94-ps2wk","wgBackendResponseTime":201,"wgPageParseReport":{"limitreport":{"cputime":"0.321","walltime":"0.439","ppvisitednodes":{"value":928,"limit":1000000},"postexpandincludesize":{"value":30243,"limit":2097152},"templateargumentsize":{"value":1311,"limit":2097152},"expansiondepth":{"value":12,"limit":100},"expensivefunctioncount":{"value":14,"limit":500},"unstrip-depth":{"value":1,"limit":20},"unstrip-size":{"value":60499,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 368.565 1 -total"," 37.19% 137.060 1 Template:Reflist"," 26.39% 97.270 1 Template:Databases"," 25.72% 94.794 1 Template:Navbox"," 24.31% 89.580 1 Template:Cite_book"," 21.90% 80.712 1 Template:Short_description"," 13.39% 49.356 2 Template:Pagetype"," 11.46% 42.229 1 Template:Which"," 10.23% 37.702 1 Template:Fix"," 7.93% 29.214 8 Template:Cite_web"]},"scribunto":{"limitreport-timeusage":{"value":"0.198","limit":"10.000"},"limitreport-memusage":{"value":5394952,"limit":52428800}},"cachereport":{"origin":"mw-api-int.eqiad.main-bdd889d6-87w97","timestamp":"20250321122754","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Database trigger","url":"https:\/\/en.wikipedia.org\/wiki\/Database_trigger","sameAs":"http:\/\/www.wikidata.org\/entity\/Q835769","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q835769","author":{"@type":"Organization","name":"Contributors to Wikimedia projects"},"publisher":{"@type":"Organization","name":"Wikimedia Foundation, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2005-01-11T01:52:17Z","dateModified":"2025-01-30T08:33:04Z","headline":"event which is causing an action in a database"}</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10