doc-exports/docs/dws/dev/dws_06_0184.html
Lu, Huayi e6fa411af0 DWS DEV 830.201 version
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2024-05-16 07:24:04 +00:00

330 lines
48 KiB
HTML

<a name="EN-US_TOPIC_0000001233510101"></a><a name="EN-US_TOPIC_0000001233510101"></a>
<h1 class="topictitle1">CREATE TRIGGER</h1>
<div id="body1551942823551"><div class="section" id="EN-US_TOPIC_0000001233510101__s5b655354cc4a468996b5ea5ccf96eef1"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001233510101__p11128134817614"><strong id="EN-US_TOPIC_0000001233510101__b1285018327563">CREATE TRIGGER</strong> creates a trigger. The trigger will be associated with a specified table or view, and will execute a specified function when certain events occur.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001233510101__sd16eb48466c14a57894886ee710120db"><h4 class="sectiontitle">Precautions</h4><ul id="EN-US_TOPIC_0000001233510101__ul139412062717"><li id="EN-US_TOPIC_0000001233510101__li158017715272">Currently, triggers can be created only on ordinary row-store tables, instead of on column-store tables, temporary tables, or unlogged tables.</li><li id="EN-US_TOPIC_0000001233510101__li347634145417">If multiple triggers of the same kind are defined for the same event, they will be fired in alphabetical order by name.</li><li id="EN-US_TOPIC_0000001233510101__li17785141710531">A trigger works only on one table. There is no limit on the number of triggers that can be created. However, more triggers on a table consume more performance.</li><li id="EN-US_TOPIC_0000001233510101__li153342473107">Triggers are usually used for data association and synchronization between multiple tables. SQL execution performance is greatly affected. Therefore, you are advised not to use this statement when a large amount of data needs to be synchronized and performance requirements are high.</li><li id="EN-US_TOPIC_0000001233510101__li730010578101">When a trigger meets the following conditions, the trigger statement and trigger itself can be pushed together down to a DN for execution, improving the trigger execution performance:<ul id="EN-US_TOPIC_0000001233510101__ul15472171784"><li id="EN-US_TOPIC_0000001233510101__li1154717171882"><strong id="EN-US_TOPIC_0000001233510101__b131744379414">enable_trigger_shipping</strong> and <strong id="EN-US_TOPIC_0000001233510101__b13167144116414">enable_fast_query_shipping</strong> are both enabled. (This is the default configuration.)</li><li id="EN-US_TOPIC_0000001233510101__li1754711713810">The trigger function used by the source table is a PL/pgSQL function (recommended).</li><li id="EN-US_TOPIC_0000001233510101__li85471817987">The source and target tables have the same type and number of distribution keys, are both row-store tables, and belong to the same Node Group.</li><li id="EN-US_TOPIC_0000001233510101__li12548517784">The <strong id="EN-US_TOPIC_0000001233510101__b177217265220">INSERT</strong>, <strong id="EN-US_TOPIC_0000001233510101__b12618228424">UPDATE</strong>, or <strong id="EN-US_TOPIC_0000001233510101__b876520301722">DELETE</strong> statement on the source table contains an expression about equality comparison between all the distribution keys and the <em id="EN-US_TOPIC_0000001233510101__i10181164310482">NEW</em> or <em id="EN-US_TOPIC_0000001233510101__i175281440205010">OLD</em> variable.</li><li id="EN-US_TOPIC_0000001233510101__li45485171687">The <strong id="EN-US_TOPIC_0000001233510101__b14374105610518">INSERT</strong>, <strong id="EN-US_TOPIC_0000001233510101__b134221057553">UPDATE</strong>, or <strong id="EN-US_TOPIC_0000001233510101__b1368516414617">DELETE</strong> statement on the source table can be pushed down without a trigger.</li><li id="EN-US_TOPIC_0000001233510101__li1254810171288">There are only six types of triggers, specified by <strong id="EN-US_TOPIC_0000001233510101__b142284451565">INSERT</strong>/<strong id="EN-US_TOPIC_0000001233510101__b963819491564">UPDATE</strong>/<strong id="EN-US_TOPIC_0000001233510101__b6487355262">DELETE</strong>, <strong id="EN-US_TOPIC_0000001233510101__b16188238105215">AFTER</strong>/<strong id="EN-US_TOPIC_0000001233510101__b1118933825219">BEFORE</strong>, and <strong id="EN-US_TOPIC_0000001233510101__b17845665210">FOR EACH ROW</strong>, on the source table, and all the triggers can be pushed down.</li></ul>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001233510101__sab6d6871adc14e79b0b3aeb1dc09527a"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510101__s6e38b11115cb4b51bdd562fc1d2be8c4"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">CONSTRAINT</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="k">trigger_name</span><span class="w"> </span><span class="err">{</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="o">|</span><span class="w"> </span><span class="k">INSTEAD</span><span class="w"> </span><span class="k">OF</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="n">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="p">...</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="err">}</span>
<span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="k">table_name</span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">referenced_table_name</span><span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">DEFERRABLE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">DEFERRABLE</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="err">{</span><span class="w"> </span><span class="k">INITIALLY</span><span class="w"> </span><span class="k">IMMEDIATE</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">INITIALLY</span><span class="w"> </span><span class="k">DEFERRED</span><span class="w"> </span><span class="err">}</span><span class="w"> </span><span class="err">}</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="err">{</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="err">}</span><span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="n">condition</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">function_name</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></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001233510101__a08c057935829473396f08d21d4bfe389">Events include:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510101__s6f43fedf8f614913a96102537e10a6ae"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span></pre></div></td><td class="code"><div><pre><span></span><span class="w"> </span><span class="k">INSERT</span>
<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="p">[</span><span class="w"> </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="p">...</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">]</span>
<span class="w"> </span><span class="k">DELETE</span>
<span class="w"> </span><span class="k">TRUNCATE</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001233510101__s17ea4f8187d34bb0966d2930fbe26d38"><h4 class="sectiontitle">Parameter Description</h4><ul id="EN-US_TOPIC_0000001233510101__u83d8d8474d9d484dbeb66e30ef5074ad"><li id="EN-US_TOPIC_0000001233510101__li8361428145613"><strong id="EN-US_TOPIC_0000001233510101__b7910144355615">CONSTRAINT</strong><p id="EN-US_TOPIC_0000001233510101__p1652873112568">(Optional) Creates a constraint trigger, that is, a trigger is used as a constraint. Such a trigger is similar to a regular trigger except that the timing of the trigger firing can be adjusted using <strong id="EN-US_TOPIC_0000001233510101__b810385791910">SET CONSTRAINTS</strong>. Constraint triggers must be <strong id="EN-US_TOPIC_0000001233510101__b84249132014">AFTER ROW</strong> triggers.</p>
</li><li id="EN-US_TOPIC_0000001233510101__le1db8114e75c46f68824d59e6eacf1f3"><strong id="EN-US_TOPIC_0000001233510101__aa0b1225700114f9d899c964b8b92d72d">trigger_name</strong><p id="EN-US_TOPIC_0000001233510101__aaf0a6a41636c49218442abe52c8b8600">Specifies the name of a new trigger. The name cannot be schema-qualified because the trigger inherits the schema of its table. In addition, triggers on the same table cannot be named the same. For a constraint trigger, this is also the name to use when you modify the trigger's behavior using <a href="dws_06_0221.html">SET CONSTRAINTS</a>.</p>
<p id="EN-US_TOPIC_0000001233510101__a8f278f7d919a4728ae8f52b8ff3c6609">Value range: a string that complies with the identifier naming convention. A value can contain a maximum of 63 characters.</p>
</li><li id="EN-US_TOPIC_0000001233510101__li347290177"><strong id="EN-US_TOPIC_0000001233510101__b734281918714">BEFORE</strong><p id="EN-US_TOPIC_0000001233510101__p330913613266">Specifies that a trigger function is called before the trigger event.</p>
</li><li id="EN-US_TOPIC_0000001233510101__li9568335256"><strong id="EN-US_TOPIC_0000001233510101__b234511916713">AFTER</strong><p id="EN-US_TOPIC_0000001233510101__p18303125415">Specifies that a trigger function is called after the trigger event. A constraint trigger can only be specified as <strong id="EN-US_TOPIC_0000001233510101__b10315174119253">AFTER</strong>.</p>
</li><li id="EN-US_TOPIC_0000001233510101__li98138582515"><strong id="EN-US_TOPIC_0000001233510101__b93473191572">INSTEAD OF</strong><p id="EN-US_TOPIC_0000001233510101__p10309181914516">Specifies that a trigger function directly replaces the trigger event.</p>
</li><li id="EN-US_TOPIC_0000001233510101__li24195363122"><strong id="EN-US_TOPIC_0000001233510101__b1877155513121">event</strong><p id="EN-US_TOPIC_0000001233510101__p11506111613114">Specifies the event that will fire a trigger. Values are <strong id="EN-US_TOPIC_0000001233510101__b9455569273">INSERT</strong>, <strong id="EN-US_TOPIC_0000001233510101__b74411095272">UPDATE</strong>, <strong id="EN-US_TOPIC_0000001233510101__b1951711119274">DELETE</strong>, and <strong id="EN-US_TOPIC_0000001233510101__b97721116202719">TRUNCATE</strong>. You can also specify multiple trigger events through <strong id="EN-US_TOPIC_0000001233510101__b9170103610272">OR</strong>.</p>
<p id="EN-US_TOPIC_0000001233510101__p466616554361">For <strong id="EN-US_TOPIC_0000001233510101__b13200165452719">UPDATE</strong> events, use the following syntax to specify a list of columns:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510101__screen63001455103713"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">UPDATE</span><span class="w"> </span><span class="k">OF</span><span class="w"> </span><span class="n">column_name1</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="n">column_name2</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">]</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001233510101__p152344432124">The trigger will only fire if at least one of the listed columns is mentioned as a target of the <strong id="EN-US_TOPIC_0000001233510101__b73143550285">UPDATE</strong> statement. <strong id="EN-US_TOPIC_0000001233510101__b988737122911">INSTEAD OF UPDATE</strong> events do not support lists of columns.</p>
</li><li id="EN-US_TOPIC_0000001233510101__l617ebaf19e2a424a83f810cd95e93a66"><strong id="EN-US_TOPIC_0000001233510101__af19d59a4cbbe4d4d89566462086713c3">table_name</strong><p id="EN-US_TOPIC_0000001233510101__a625dfcff15924ff79c8cb01de930748f">Specifies the name of the table where a trigger needs to be created.</p>
<p id="EN-US_TOPIC_0000001233510101__p711315618308">Value range: name of an existing table in the database</p>
</li><li id="EN-US_TOPIC_0000001233510101__li142864581160"><strong id="EN-US_TOPIC_0000001233510101__b32581866170">referenced_table_name</strong><p id="EN-US_TOPIC_0000001233510101__p273111018174">Specifies the name of another table referenced by a constraint. This parameter can be specified only for constraint triggers. It does not support foreign key constraints and is not recommended for general use.</p>
<p id="EN-US_TOPIC_0000001233510101__p10998410101710">Value range: name of an existing table in the database</p>
</li><li id="EN-US_TOPIC_0000001233510101__li1015116135253"><strong id="EN-US_TOPIC_0000001233510101__b7743192182514">DEFERRABLE |</strong><strong id="EN-US_TOPIC_0000001233510101__b1374512182511"> NOT DEFERRABLE</strong><p id="EN-US_TOPIC_0000001233510101__p2471540121720">Controls whether a constraint can be deferred. The two parameters determine the timing for firing a constraint trigger, and can be specified only for constraint triggers.</p>
<p id="EN-US_TOPIC_0000001233510101__p16756934169">For details, see <a href="dws_06_0177.html">CREATE TABLE</a>.</p>
</li><li id="EN-US_TOPIC_0000001233510101__li127700366157"><strong id="EN-US_TOPIC_0000001233510101__b7746182115251">INITIALLY IMMEDIATE</strong> <strong id="EN-US_TOPIC_0000001233510101__b2862135017154">| </strong><strong id="EN-US_TOPIC_0000001233510101__b177476210252">INITIALLY DEFERRED</strong><p id="EN-US_TOPIC_0000001233510101__p5488144010186">If a constraint is deferrable, the two clauses specify the default time to check the constraint, and can be specified only for constraint triggers.</p>
<p id="EN-US_TOPIC_0000001233510101__p10194112621819">For details, see <a href="dws_06_0177.html">CREATE TABLE</a>.</p>
</li><li id="EN-US_TOPIC_0000001233510101__li1259811115154"><strong id="EN-US_TOPIC_0000001233510101__b18402116141511">FOR EACH ROW | </strong><strong id="EN-US_TOPIC_0000001233510101__b9406101618154">FOR EACH STATEMENT</strong><p id="EN-US_TOPIC_0000001233510101__p17920479205">Specifies the frequency of firing a trigger.</p>
<ul id="EN-US_TOPIC_0000001233510101__ul643915208206"><li id="EN-US_TOPIC_0000001233510101__li19185121314207"><strong id="EN-US_TOPIC_0000001233510101__b28831637114116">FOR EACH ROW</strong> indicates that the trigger should be fired once for every row affected by the trigger event.</li><li id="EN-US_TOPIC_0000001233510101__li15052127215"><strong id="EN-US_TOPIC_0000001233510101__b1094131214420">FOR EACH STATEMENT</strong> indicates that the trigger should be fired just once per SQL statement.</li></ul>
<p id="EN-US_TOPIC_0000001233510101__p11547714202115">If this parameter is not specified, the default value <strong id="EN-US_TOPIC_0000001233510101__b132166387422">FOR EACH STATEMENT</strong> will be used. Constraint triggers can only be specified as <strong id="EN-US_TOPIC_0000001233510101__b966085510426">FOR EACH ROW</strong>.</p>
</li><li id="EN-US_TOPIC_0000001233510101__li1279195912178"><strong id="EN-US_TOPIC_0000001233510101__b10835244187">condition</strong><p id="EN-US_TOPIC_0000001233510101__p2859421162611">Specifies a Boolean expression that determines whether a trigger function will actually be executed. If <strong id="EN-US_TOPIC_0000001233510101__b128441343154313">WHEN</strong> is specified, the function will be called only when <strong id="EN-US_TOPIC_0000001233510101__b45291194413">condition</strong> returns <strong id="EN-US_TOPIC_0000001233510101__b355035254311">true</strong>.</p>
<p id="EN-US_TOPIC_0000001233510101__p6692141112272">In <strong id="EN-US_TOPIC_0000001233510101__b67362521448">FOR EACH ROW</strong> triggers, the <strong id="EN-US_TOPIC_0000001233510101__b1045105974420">WHEN</strong> condition can reference the columns of old or new row values by writing <strong id="EN-US_TOPIC_0000001233510101__b149072051144616">OLD.</strong><em id="EN-US_TOPIC_0000001233510101__i876205312463">column_name</em> or <strong id="EN-US_TOPIC_0000001233510101__b27403560465">NEW.</strong><em id="EN-US_TOPIC_0000001233510101__i17790857184612">column_name</em>, respectively. Note that <strong id="EN-US_TOPIC_0000001233510101__b42022175712">INSERT</strong> triggers cannot reference <strong id="EN-US_TOPIC_0000001233510101__b32018205715">OLD</strong> and <strong id="EN-US_TOPIC_0000001233510101__b1221192115712">DELETE</strong> triggers cannot reference <strong id="EN-US_TOPIC_0000001233510101__b6228265714">NEW</strong>.</p>
<p id="EN-US_TOPIC_0000001233510101__p36481798278"><strong id="EN-US_TOPIC_0000001233510101__b8359620104713">INSTEAD OF</strong> triggers do not support <strong id="EN-US_TOPIC_0000001233510101__b18173727154713">WHEN</strong> conditions.</p>
<p id="EN-US_TOPIC_0000001233510101__p56541271276"><strong id="EN-US_TOPIC_0000001233510101__b12389173612479">WHEN</strong> expressions cannot contain subqueries.</p>
<p id="EN-US_TOPIC_0000001233510101__p0982542279">For constraint triggers, evaluation of the <strong id="EN-US_TOPIC_0000001233510101__b14129181519481">WHEN</strong> condition is not deferred, but occurs immediately after the update operation is performed. If the condition does not return <strong id="EN-US_TOPIC_0000001233510101__b1095132219499">true</strong>, the trigger will not be queued for deferred execution.</p>
</li><li id="EN-US_TOPIC_0000001233510101__li26622237181"><strong id="EN-US_TOPIC_0000001233510101__b2453112911816">function_name</strong><p id="EN-US_TOPIC_0000001233510101__p13417254171413">Specifies a user-defined function, which must be declared as taking no parameters and returning data of the trigger type. This function is executed when a trigger fires.</p>
</li><li id="EN-US_TOPIC_0000001233510101__li889343861816"><strong id="EN-US_TOPIC_0000001233510101__b78821936131814">arguments</strong><p id="EN-US_TOPIC_0000001233510101__p452593510259">Specifies an optional, comma-separated list of parameters to be provided to a function when a trigger is executed. Parameters are literal string constants. Simple names and numeric constants can also be included, but they will all be converted to strings. Check descriptions of the implementation language of a trigger function to find out how these parameters are accessed within the function.</p>
<div class="note" id="EN-US_TOPIC_0000001233510101__note174681631113919"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001233510101__p16083236407">The following details trigger types:</p>
<ul id="EN-US_TOPIC_0000001233510101__ul18326144512421"><li id="EN-US_TOPIC_0000001233510101__li1432616452421"><strong id="EN-US_TOPIC_0000001233510101__b1911013254577">INSTEAD OF</strong> triggers must be marked as <strong id="EN-US_TOPIC_0000001233510101__b743333195716">FOR EACH ROW</strong> and can be defined only on views.</li><li id="EN-US_TOPIC_0000001233510101__li18326164534216"><strong id="EN-US_TOPIC_0000001233510101__b97586512585">BEFORE</strong> and <strong id="EN-US_TOPIC_0000001233510101__b191919109581">AFTER</strong> triggers on a view must be marked as <strong id="EN-US_TOPIC_0000001233510101__b13761131555816">FOR EACH STATEMENT</strong>.</li><li id="EN-US_TOPIC_0000001233510101__li1032664512427"><strong id="EN-US_TOPIC_0000001233510101__b464713135812">TRUNCATE</strong> triggers must be marked as <strong id="EN-US_TOPIC_0000001233510101__b1579963985818">FOR EACH STATEMENT</strong>.</li></ul>
</div></div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="EN-US_TOPIC_0000001233510101__table15282217184416" frame="border" border="1" rules="all"><caption><b>Table 1 </b>Types of triggers supported on tables and views</caption><thead align="left"><tr id="EN-US_TOPIC_0000001233510101__row1928351717446"><th align="left" class="cellrowborder" valign="top" width="18.61%" id="mcps1.3.4.2.14.4.2.5.1.1"><p id="EN-US_TOPIC_0000001233510101__p172831717164411">Trigger Timing</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="31.39%" id="mcps1.3.4.2.14.4.2.5.1.2"><p id="EN-US_TOPIC_0000001233510101__p12831417204411">Trigger Event</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="25%" id="mcps1.3.4.2.14.4.2.5.1.3"><p id="EN-US_TOPIC_0000001233510101__p02835173441">Row-level</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="25%" id="mcps1.3.4.2.14.4.2.5.1.4"><p id="EN-US_TOPIC_0000001233510101__p7283151724411">Statement-level</p>
</th>
</tr>
</thead>
<tbody><tr id="EN-US_TOPIC_0000001233510101__row172831817174411"><td class="cellrowborder" rowspan="2" valign="top" width="18.61%" headers="mcps1.3.4.2.14.4.2.5.1.1 "><p id="EN-US_TOPIC_0000001233510101__p730044544511">BEFORE</p>
</td>
<td class="cellrowborder" valign="top" width="31.39%" headers="mcps1.3.4.2.14.4.2.5.1.2 "><p id="EN-US_TOPIC_0000001233510101__p3284317124416">INSERT/UPDATE/DELETE</p>
</td>
<td class="cellrowborder" valign="top" width="25%" headers="mcps1.3.4.2.14.4.2.5.1.3 "><p id="EN-US_TOPIC_0000001233510101__p328415179448">Tables</p>
</td>
<td class="cellrowborder" valign="top" width="25%" headers="mcps1.3.4.2.14.4.2.5.1.4 "><p id="EN-US_TOPIC_0000001233510101__p52841717144413">Tables and views</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row16284131794411"><td class="cellrowborder" valign="top" headers="mcps1.3.4.2.14.4.2.5.1.1 "><p id="EN-US_TOPIC_0000001233510101__p11284117194411">TRUNCATE</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.2.14.4.2.5.1.2 "><p id="EN-US_TOPIC_0000001233510101__p17284117134416">Not supported</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.2.14.4.2.5.1.3 "><p id="EN-US_TOPIC_0000001233510101__p928411720440">Tables</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row13284111719447"><td class="cellrowborder" rowspan="2" valign="top" width="18.61%" headers="mcps1.3.4.2.14.4.2.5.1.1 "><p id="EN-US_TOPIC_0000001233510101__p77757114469">AFTER</p>
</td>
<td class="cellrowborder" valign="top" width="31.39%" headers="mcps1.3.4.2.14.4.2.5.1.2 "><p id="EN-US_TOPIC_0000001233510101__p152851217194419">INSERT/UPDATE/DELETE</p>
</td>
<td class="cellrowborder" valign="top" width="25%" headers="mcps1.3.4.2.14.4.2.5.1.3 "><p id="EN-US_TOPIC_0000001233510101__p18285111715443">Tables</p>
</td>
<td class="cellrowborder" valign="top" width="25%" headers="mcps1.3.4.2.14.4.2.5.1.4 "><p id="EN-US_TOPIC_0000001233510101__p6285191714444">Tables and views</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row628521784416"><td class="cellrowborder" valign="top" headers="mcps1.3.4.2.14.4.2.5.1.1 "><p id="EN-US_TOPIC_0000001233510101__p028581720447">TRUNCATE</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.2.14.4.2.5.1.2 "><p id="EN-US_TOPIC_0000001233510101__p79551335194718">Not supported</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.2.14.4.2.5.1.3 "><p id="EN-US_TOPIC_0000001233510101__p32851817104412">Tables</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row1628517179447"><td class="cellrowborder" rowspan="2" valign="top" width="18.61%" headers="mcps1.3.4.2.14.4.2.5.1.1 "><p id="EN-US_TOPIC_0000001233510101__p76867126463">INSTEAD OF</p>
</td>
<td class="cellrowborder" valign="top" width="31.39%" headers="mcps1.3.4.2.14.4.2.5.1.2 "><p id="EN-US_TOPIC_0000001233510101__p132851717134412">INSERT/UPDATE/DELETE</p>
</td>
<td class="cellrowborder" valign="top" width="25%" headers="mcps1.3.4.2.14.4.2.5.1.3 "><p id="EN-US_TOPIC_0000001233510101__p628520177441">Views</p>
</td>
<td class="cellrowborder" valign="top" width="25%" headers="mcps1.3.4.2.14.4.2.5.1.4 "><p id="EN-US_TOPIC_0000001233510101__p328521734411">Not supported</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row4285121715449"><td class="cellrowborder" valign="top" headers="mcps1.3.4.2.14.4.2.5.1.1 "><p id="EN-US_TOPIC_0000001233510101__p5285121710449">TRUNCATE</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.2.14.4.2.5.1.2 "><p id="EN-US_TOPIC_0000001233510101__p13881123616473">Not supported</p>
</td>
<td class="cellrowborder" valign="top" headers="mcps1.3.4.2.14.4.2.5.1.3 "><p id="EN-US_TOPIC_0000001233510101__p828581719444">Not supported</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="tablenoborder"><table cellpadding="4" cellspacing="0" summary="" id="EN-US_TOPIC_0000001233510101__table760181655812" frame="border" border="1" rules="all"><caption><b>Table 2 </b>Special variables in the functions PL/pgSQL triggers</caption><thead align="left"><tr id="EN-US_TOPIC_0000001233510101__row19602716145815"><th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.4.2.14.5.2.3.1.1"><p id="EN-US_TOPIC_0000001233510101__p206021716105816">Variable</p>
</th>
<th align="left" class="cellrowborder" valign="top" width="50%" id="mcps1.3.4.2.14.5.2.3.1.2"><p id="EN-US_TOPIC_0000001233510101__p1460201645816">Description</p>
</th>
</tr>
</thead>
<tbody><tr id="EN-US_TOPIC_0000001233510101__row3602131614583"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001233510101__p14602151695812">NEW</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001233510101__p1860211675810">New tuple for <strong id="EN-US_TOPIC_0000001233510101__b20344345611">INSERT</strong>/<strong id="EN-US_TOPIC_0000001233510101__b85087619616">UPDATE</strong> operations. This variable is <strong id="EN-US_TOPIC_0000001233510101__b72381425462">NULL</strong> for <strong id="EN-US_TOPIC_0000001233510101__b1144330163">DELETE</strong> operations.</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row76021816145814"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001233510101__p11602191615818">OLD</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001233510101__p1602171615583">Old tuple for <strong id="EN-US_TOPIC_0000001233510101__b173493716616">UPDATE</strong>/<strong id="EN-US_TOPIC_0000001233510101__b17359375619">DELETE</strong> operations. This variable is <strong id="EN-US_TOPIC_0000001233510101__b93616376619">NULL</strong> for <strong id="EN-US_TOPIC_0000001233510101__b1337637763">INSERT</strong> operations.</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row18602416155810"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001233510101__p1475416171454">TG_NAME</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001233510101__p5602181610580">Trigger name</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row1603161675820"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001233510101__p1475411171056">TG_WHEN</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001233510101__p206031016115811">Trigger timing (<strong id="EN-US_TOPIC_0000001233510101__b46713119710">BEFORE</strong>/<strong id="EN-US_TOPIC_0000001233510101__b103531334712">AFTER</strong>/<strong id="EN-US_TOPIC_0000001233510101__b164011435677">INSTEAD OF</strong>)</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row1660319162582"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001233510101__p1175418171457">TG_LEVEL</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001233510101__p0603191615816">Trigger frequency (<strong id="EN-US_TOPIC_0000001233510101__b9118248774">ROW</strong>/<strong id="EN-US_TOPIC_0000001233510101__b53924526713">STATEMENT</strong>)</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row1560316166589"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001233510101__p127546171358">TG_OP</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001233510101__p10603716185818">Trigger event (<strong id="EN-US_TOPIC_0000001233510101__b677315515816">INSERT</strong>/<strong id="EN-US_TOPIC_0000001233510101__b598118619815">UPDATE</strong>/<strong id="EN-US_TOPIC_0000001233510101__b1857310811815">DELETE</strong>/<strong id="EN-US_TOPIC_0000001233510101__b13469811586">TRUNCATE</strong>)</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row10541541358"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001233510101__p27541171651">TG_RELID</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001233510101__p1954041519">OID of the table where a trigger is located</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row45412413517"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001233510101__p1875420175514">TG_RELNAME</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001233510101__p205414755">Name of the table where a trigger is located. (This variable is now discarded and is replaced by <strong id="EN-US_TOPIC_0000001233510101__b662915434161">TG_TABLE_NAME</strong>.)</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row13249111110518"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001233510101__p87540171655">TG_TABLE_NAME</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001233510101__p10250201116514">Name of the table where a trigger is located.</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row162500111657"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001233510101__p1475451710513">TG_TABLE_SCHEMA</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001233510101__p6250711553">Schema information of the table where a trigger is located</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row625014111253"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001233510101__p117543174514">TG_NARGS</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001233510101__p192506111453">Number of parameters for a trigger function</p>
</td>
</tr>
<tr id="EN-US_TOPIC_0000001233510101__row1764175611515"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.1 "><p id="EN-US_TOPIC_0000001233510101__p37540171551">TG_ARGV[]</p>
</td>
<td class="cellrowborder" valign="top" width="50%" headers="mcps1.3.4.2.14.5.2.3.1.2 "><p id="EN-US_TOPIC_0000001233510101__p676419562519">List of parameters for a trigger function</p>
</td>
</tr>
</tbody>
</table>
</div>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001233510101__s09bff25d2b394d54b798e90da9d05741"><h4 class="sectiontitle">Examples</h4><p id="EN-US_TOPIC_0000001233510101__p20893492297">Create a source table and a trigger table:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510101__screen1089184962911"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DROP</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">test_trigger_src_tbl</span><span class="p">;</span>
<span class="k">DROP</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">test_trigger_des_tbl</span><span class="p">;</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">test_trigger_src_tbl</span><span class="p">(</span><span class="n">id1</span><span class="w"> </span><span class="nb">INT</span><span class="p">,</span><span class="w"> </span><span class="n">id2</span><span class="w"> </span><span class="nb">INT</span><span class="p">,</span><span class="w"> </span><span class="n">id3</span><span class="w"> </span><span class="nb">INT</span><span class="p">);</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">test_trigger_des_tbl</span><span class="p">(</span><span class="n">id1</span><span class="w"> </span><span class="nb">INT</span><span class="p">,</span><span class="w"> </span><span class="n">id2</span><span class="w"> </span><span class="nb">INT</span><span class="p">,</span><span class="w"> </span><span class="n">id3</span><span class="w"> </span><span class="nb">INT</span><span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001233510101__p4891949192915">Create the trigger function <strong id="EN-US_TOPIC_0000001233510101__b113389098833251">tri_insert_func()</strong>:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510101__screen1899497294"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span>
<span class="normal">8</span>
<span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DROP</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">tri_insert_func</span><span class="p">;</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">FUNCTION</span><span class="w"> </span><span class="n">tri_insert_func</span><span class="p">()</span><span class="w"> </span><span class="k">RETURNS</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="k">AS</span>
<span class="w"> </span><span class="err">$$</span>
<span class="w"> </span><span class="k">DECLARE</span>
<span class="w"> </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">test_trigger_des_tbl</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="k">NEW</span><span class="p">.</span><span class="n">id1</span><span class="p">,</span><span class="w"> </span><span class="k">NEW</span><span class="p">.</span><span class="n">id2</span><span class="p">,</span><span class="w"> </span><span class="k">NEW</span><span class="p">.</span><span class="n">id3</span><span class="p">);</span>
<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="k">NEW</span><span class="p">;</span>
<span class="w"> </span><span class="k">END</span>
<span class="w"> </span><span class="err">$$</span><span class="w"> </span><span class="k">LANGUAGE</span><span class="w"> </span><span class="n">PLPGSQL</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001233510101__p5901949192912">Create the trigger function <strong id="EN-US_TOPIC_0000001233510101__b65845633133251">tri_update_func()</strong>:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510101__screen490849182918"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span>
<span class="normal">8</span>
<span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DROP</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">tri_update_func</span><span class="p">;</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">FUNCTION</span><span class="w"> </span><span class="n">tri_update_func</span><span class="p">()</span><span class="w"> </span><span class="k">RETURNS</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="k">AS</span>
<span class="w"> </span><span class="err">$$</span>
<span class="w"> </span><span class="k">DECLARE</span>
<span class="w"> </span><span class="k">BEGIN</span>
<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">test_trigger_des_tbl</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">id3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">NEW</span><span class="p">.</span><span class="n">id3</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">id1</span><span class="o">=</span><span class="k">OLD</span><span class="p">.</span><span class="n">id1</span><span class="p">;</span>
<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="k">OLD</span><span class="p">;</span>
<span class="w"> </span><span class="k">END</span>
<span class="w"> </span><span class="err">$$</span><span class="w"> </span><span class="k">LANGUAGE</span><span class="w"> </span><span class="n">PLPGSQL</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001233510101__p11907494295">Create the trigger function <strong id="EN-US_TOPIC_0000001233510101__b207232391033251">tri_delete_func()</strong>:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510101__screen49074916294"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span>
<span class="normal">8</span>
<span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DROP</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">tri_delete_func</span><span class="p">;</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">FUNCTION</span><span class="w"> </span><span class="n">tri_delete_func</span><span class="p">()</span><span class="w"> </span><span class="k">RETURNS</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="k">AS</span>
<span class="w"> </span><span class="err">$$</span>
<span class="w"> </span><span class="k">DECLARE</span>
<span class="w"> </span><span class="k">BEGIN</span>
<span class="w"> </span><span class="k">DELETE</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">test_trigger_des_tbl</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">id1</span><span class="o">=</span><span class="k">OLD</span><span class="p">.</span><span class="n">id1</span><span class="p">;</span>
<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="k">OLD</span><span class="p">;</span>
<span class="w"> </span><span class="k">END</span>
<span class="w"> </span><span class="err">$$</span><span class="w"> </span><span class="k">LANGUAGE</span><span class="w"> </span><span class="n">PLPGSQL</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001233510101__p490174919293">Create an <strong id="EN-US_TOPIC_0000001233510101__b100921051233251">INSERT</strong> trigger:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510101__screen1390164912299"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DROP</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">insert_trigger</span><span class="p">;</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="n">insert_trigger</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">test_trigger_src_tbl</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">EXECUTE</span><span class="w"> </span><span class="k">PROCEDURE</span><span class="w"> </span><span class="n">tri_insert_func</span><span class="p">();</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001233510101__p1590154992910">Create an <strong id="EN-US_TOPIC_0000001233510101__b65750332933251">UPDATE</strong> trigger:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510101__screen890204914294"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DROP</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">update_trigger</span><span class="p">;</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="n">update_trigger</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">test_trigger_src_tbl</span><span class="w"> </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">EXECUTE</span><span class="w"> </span><span class="k">PROCEDURE</span><span class="w"> </span><span class="n">tri_update_func</span><span class="p">();</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001233510101__p6901449192917">Create a <strong id="EN-US_TOPIC_0000001233510101__b44738042233251">DELETE</strong> trigger:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001233510101__screen109013495293"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">DROP</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="n">update_trigger</span><span class="p">;</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">TRIGGER</span><span class="w"> </span><span class="n">delete_trigger</span>
<span class="w"> </span><span class="k">BEFORE</span><span class="w"> </span><span class="k">DELETE</span><span class="w"> </span><span class="k">ON</span><span class="w"> </span><span class="n">test_trigger_src_tbl</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">EXECUTE</span><span class="w"> </span><span class="k">PROCEDURE</span><span class="w"> </span><span class="n">tri_delete_func</span><span class="p">();</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001233510101__s72b6a79261c247a0bd70247bdfa5da4d"><h4 class="sectiontitle">Helpful Links</h4><p id="EN-US_TOPIC_0000001233510101__ab5a1cd48fb9d41f483d47e84410f176c"><a href="dws_06_0147.html">ALTER TRIGGER</a>, <a href="dws_06_0212.html">DROP TRIGGER</a>, <a href="dws_06_0142.html">ALTER TABLE</a></p>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0118.html">DDL Syntax</a></div>
</div>
</div>