<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FTrigger%2FUtility_trigger</id>
		<title>Oracle PL/SQL Tutorial/Trigger/Utility trigger - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.sqle.ru/index.php?action=history&amp;feed=atom&amp;title=Oracle_PL%2FSQL_Tutorial%2FTrigger%2FUtility_trigger"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Trigger/Utility_trigger&amp;action=history"/>
		<updated>2026-05-24T00:04:18Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Trigger/Utility_trigger&amp;diff=3565&amp;oldid=prev</id>
		<title> в 13:45, 26 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Trigger/Utility_trigger&amp;diff=3565&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 13:45, 26 мая 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
			</entry>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Trigger/Utility_trigger&amp;diff=3566&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Trigger/Utility_trigger&amp;diff=3566&amp;oldid=prev"/>
				<updated>2010-05-26T10:07:19Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== A trigger prevents updates after business hours==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table employee(&lt;br /&gt;
  2           emp_no                 integer     primary key&lt;br /&gt;
  3          ,lastname               varchar2(20)    not null&lt;br /&gt;
  4          ,firstname              varchar2(15)    not null&lt;br /&gt;
  5          ,midinit                varchar2(1)&lt;br /&gt;
  6          ,street                 varchar2(30)&lt;br /&gt;
  7          ,city                   varchar2(20)&lt;br /&gt;
  8          ,state                  varchar2(2)&lt;br /&gt;
  9          ,zip                    varchar2(5)&lt;br /&gt;
 10          ,zip_4                  varchar2(4)&lt;br /&gt;
 11          ,area_code              varchar2(3)&lt;br /&gt;
 12          ,phone                  varchar2(8)&lt;br /&gt;
 13          ,salary                 number(5,2)&lt;br /&gt;
 14          ,birthdate              date&lt;br /&gt;
 15          ,hiredate               date&lt;br /&gt;
 16          ,title                  varchar2(20)&lt;br /&gt;
 17          ,dept_no                integer&lt;br /&gt;
 18        ,mgr              integer&lt;br /&gt;
 19        ,region           number&lt;br /&gt;
 20        ,division         number&lt;br /&gt;
 21        ,total_sales          number&lt;br /&gt;
 22         );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip,zip_4, area_code, phone, birthdate, title)&lt;br /&gt;
  2  values (1,&amp;quot;Gardinia&amp;quot;,&amp;quot;Joy&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;688 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;12122&amp;quot;,&amp;quot;2333&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;200-3393&amp;quot;,&amp;quot;12-nov-1956&amp;quot;,&amp;quot;President&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values (2,&amp;quot;Anderson&amp;quot;,&amp;quot;Lucy&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;33 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;43552&amp;quot;,&amp;quot;6633&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;234-4444&amp;quot;,7.75,&amp;quot;21-mar-1951&amp;quot;,&amp;quot;1-feb-1994&amp;quot;,&amp;quot;Sales Manager&amp;quot;,2,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate,title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values (3,&amp;quot;Somers&amp;quot;,&amp;quot;Ingrid&amp;quot;,&amp;quot;E&amp;quot;,&amp;quot;12 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;76822&amp;quot;,&amp;quot;8763&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;867-6893&amp;quot;,7.75,&amp;quot;14-feb-1963&amp;quot;,&amp;quot;15-mar-1995&amp;quot;,&amp;quot;Sales Clerk&amp;quot;,2,2,100,10,10000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip,zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values (4,&amp;quot;Washington&amp;quot;,&amp;quot;Georgia&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;13th Street&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;43122&amp;quot;,&amp;quot;4333&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;340-4365&amp;quot;,11.50,&amp;quot;2-jul-1963&amp;quot;,&amp;quot;21-apr-1994&amp;quot;,&amp;quot;Designer&amp;quot;,1,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values (5,&amp;quot;Doright&amp;quot;,&amp;quot;Dudley&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;56 Langer Street&amp;quot;,&amp;quot;Staten Island&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;23332&amp;quot;,&amp;quot;4983&amp;quot;,&amp;quot;718&amp;quot;,&amp;quot;777-4365&amp;quot;,21.65,&amp;quot;15-may-1958&amp;quot;,&amp;quot;2-aug-1994&amp;quot;,&amp;quot;Designer&amp;quot;,1,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip,zip_4, area_code, phone, salary, birthdate, hiredate,title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 6,&amp;quot;Doright&amp;quot;,&amp;quot;Dorothy&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;56 Langer Street&amp;quot;,&amp;quot;Staten Island&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;23332&amp;quot;,&amp;quot;4983&amp;quot;,&amp;quot;718&amp;quot;,&amp;quot;777-4365&amp;quot;,24.65,&amp;quot;10-dec-1968&amp;quot;,&amp;quot;2-aug-1994&amp;quot;,&amp;quot;Designer&amp;quot;,1,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 7,&amp;quot;Perry&amp;quot;,&amp;quot;Donna&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;1st Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;44444&amp;quot;,&amp;quot;3444&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;111-6893&amp;quot;,7.75,&amp;quot;14-feb-1967&amp;quot;,&amp;quot;15-mar-1995&amp;quot;,&amp;quot;Sales Clerk&amp;quot;,2,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 8,&amp;quot;Roger&amp;quot;,&amp;quot;John&amp;quot;,&amp;quot;E&amp;quot;,&amp;quot;67 H Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;33822&amp;quot;,&amp;quot;1163&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;122-6893&amp;quot;,10.00,&amp;quot;14-jun-1956&amp;quot;,&amp;quot;15-mar-1995&amp;quot;,&amp;quot;Accountant&amp;quot;,3,1,100,10,40000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 9,&amp;quot;Hall&amp;quot;,&amp;quot;Ted&amp;quot;,&amp;quot;R&amp;quot;,&amp;quot;1236 Lane&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;33823&amp;quot;,&amp;quot;1164&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;222-4393&amp;quot;,13.00,&amp;quot;10-jun-1959&amp;quot;,&amp;quot;15-aug-1997&amp;quot;,&amp;quot;Sales Representative&amp;quot;,3,1,100,10,50000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(emp_no, lastname, firstname, midinit, street, city, state, zip, zip_4, area_code, phone, salary, birthdate, hiredate, title, dept_no, mgr, region, division, total_sales)&lt;br /&gt;
  2  values ( 10,&amp;quot;Barbee&amp;quot;,&amp;quot;Candice&amp;quot;,&amp;quot;L&amp;quot;,&amp;quot;400 Street&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;33811&amp;quot;,&amp;quot;2009&amp;quot;,&amp;quot;212&amp;quot;,&amp;quot;321-6873&amp;quot;,12.00,&amp;quot;10-oct-1964&amp;quot;,&amp;quot;15-jan-1999&amp;quot;,&amp;quot;Sales Representative&amp;quot;,3,1,100,10,35000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace trigger tr_emp_maint_restrict&lt;br /&gt;
  2  before update or insert or delete&lt;br /&gt;
  3  on employee&lt;br /&gt;
  4  begin&lt;br /&gt;
  5    if to_char(sysdate, &amp;quot;hh24&amp;quot;) &amp;gt;= &amp;quot;09&amp;quot; AND&lt;br /&gt;
  6       to_char(sysdate, &amp;quot;hh24&amp;quot;) &amp;lt;= &amp;quot;17&amp;quot; then&lt;br /&gt;
  7       null;&lt;br /&gt;
  8    else&lt;br /&gt;
  9          raise_application_error (-20000, &amp;quot;Employee info may not be modified at this time!&amp;quot;) ;&lt;br /&gt;
 10    end if ;&lt;br /&gt;
 11  end ;&lt;br /&gt;
 12  /&lt;br /&gt;
Trigger created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; --to test&lt;br /&gt;
SQL&amp;gt; update employee set area_code = 212 where emp_no = 1;&lt;br /&gt;
update employee set area_code = 212 where emp_no = 1&lt;br /&gt;
       *&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-20000: Employee info may not be modified at this time!&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.TR_EMP_MAINT_RESTRICT&amp;quot;, line 6&lt;br /&gt;
ORA-04088: error during execution of trigger &amp;quot;sqle.TR_EMP_MAINT_RESTRICT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table employee;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Records a error in the error logging table.==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE SEQUENCE system_error_id NOCACHE;&lt;br /&gt;
Sequence created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE system_errors&lt;br /&gt;
  2     (system_error_id  NUMBER(10,0), package_name  VARCHAR2(50),&lt;br /&gt;
  3      procedure_name  VARCHAR2(50), execution_location  varchar2(20),&lt;br /&gt;
  4      oracle_error_text  VARCHAR2(200),&lt;br /&gt;
  5      additional_information  VARCHAR2(2000),&lt;br /&gt;
  6      call_stack   VARCHAR2(2000), error_stack  VARCHAR2(2000),&lt;br /&gt;
  7      insert_time  DATE, insert_user  VARCHAR2(30));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; COMMENT ON TABLE system_errors IS&lt;br /&gt;
  2     &amp;quot;Errors generated by stored packages.&amp;quot;;&lt;br /&gt;
Comment created.&lt;br /&gt;
SQL&amp;gt; COMMENT ON COLUMN system_errors.system_error_id IS&lt;br /&gt;
  2     &amp;quot;The system-wide ID to identify a system error. Useful for&lt;br /&gt;
  3      determining the order in which errors were encountered and&lt;br /&gt;
  4      logged.&amp;quot;;&lt;br /&gt;
Comment created.&lt;br /&gt;
SQL&amp;gt; COMMENT ON COLUMN system_errors.package_name IS &amp;quot;The package name.&amp;quot;;&lt;br /&gt;
Comment created.&lt;br /&gt;
SQL&amp;gt; COMMENT ON COLUMN system_errors.procedure_name IS &amp;quot;The procedure/function name.&amp;quot;;&lt;br /&gt;
Comment created.&lt;br /&gt;
SQL&amp;gt; COMMENT ON COLUMN system_errors.execution_location IS &amp;quot;A reference to a location in the executing code.&amp;quot;;&lt;br /&gt;
Comment created.&lt;br /&gt;
SQL&amp;gt; COMMENT ON COLUMN system_errors.oracle_error_text IS &amp;quot;The text of the Oracle error message.&amp;quot;;&lt;br /&gt;
Comment created.&lt;br /&gt;
SQL&amp;gt; COMMENT ON COLUMN system_errors.additional_information IS &amp;quot;Any pertinent information the developer may be trapping by the error handler.&amp;quot;;&lt;br /&gt;
Comment created.&lt;br /&gt;
SQL&amp;gt; COMMENT ON COLUMN system_errors.call_stack IS &amp;quot;The call stack at the time of the error.&amp;quot;;&lt;br /&gt;
Comment created.&lt;br /&gt;
SQL&amp;gt; COMMENT ON COLUMN system_errors.error_stack IS &amp;quot;The error stack at the time of the error.&amp;quot;;&lt;br /&gt;
Comment created.&lt;br /&gt;
SQL&amp;gt; COMMENT ON COLUMN system_errors.insert_time IS &amp;quot;The date and time of record insertion.&amp;quot;;&lt;br /&gt;
Comment created.&lt;br /&gt;
SQL&amp;gt; COMMENT ON COLUMN system_errors.insert_user IS &amp;quot;The user inserting the record.&amp;quot;;&lt;br /&gt;
Comment created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE PROCEDURE log_error&lt;br /&gt;
  2     (p_package_txt   VARCHAR2 DEFAULT &amp;quot;UNKNOWN&amp;quot;,&lt;br /&gt;
  3     p_procedure_txt VARCHAR2 DEFAULT &amp;quot;UNKNOWN&amp;quot;,&lt;br /&gt;
  4     p_location_txt  VARCHAR2 DEFAULT &amp;quot;UNKNOWN&amp;quot;,&lt;br /&gt;
  5     p_error_txt     VARCHAR2 DEFAULT &amp;quot;UNKNOWN&amp;quot;,&lt;br /&gt;
  6     p_text_txt      VARCHAR2 DEFAULT &amp;quot;NONE&amp;quot;,&lt;br /&gt;
  7     p_commit_bln    BOOLEAN  DEFAULT TRUE,&lt;br /&gt;
  8     p_user_txt      VARCHAR2 DEFAULT USER,&lt;br /&gt;
  9     p_time_date     DATE     DEFAULT SYSDATE) IS&lt;br /&gt;
 10     lv_call_stack_txt VARCHAR2(2000);&lt;br /&gt;
 11     lv_error_stack_txt VARCHAR2(2000);&lt;br /&gt;
 12     pu_failure_excep EXCEPTION;&lt;br /&gt;
 13     PRAGMA EXCEPTION_INIT (pu_failure_excep, -20000);&lt;br /&gt;
 14  BEGIN&lt;br /&gt;
 15     lv_call_stack_txt := SUBSTR(DBMS_UTILITY.FORMAT_CALL_STACK, 1, 2000);&lt;br /&gt;
 16     lv_error_stack_txt := SUBSTR(DBMS_UTILITY.FORMAT_ERROR_STACK, 1, 2000);&lt;br /&gt;
 17     INSERT INTO system_errors (system_error_id, package_name, procedure_name,&lt;br /&gt;
 18         execution_location, oracle_error_text, additional_information,&lt;br /&gt;
 19         call_stack, error_stack, insert_time, insert_user)&lt;br /&gt;
 20     VALUES (system_error_id.NEXTVAL, SUBSTR(p_package_txt, 1, 50),&lt;br /&gt;
 21         SUBSTR(p_procedure_txt, 1, 50),&lt;br /&gt;
 22         SUBSTR(p_location_txt, 1, 20), SUBSTR(p_error_txt, 1, 200),&lt;br /&gt;
 23         SUBSTR(p_text_txt, 1, 2000), lv_call_stack_txt,&lt;br /&gt;
 24         lv_error_stack_txt, p_time_date, p_user_txt);&lt;br /&gt;
 25     IF p_commit_bln THEN&lt;br /&gt;
 26        COMMIT;&lt;br /&gt;
 27      END IF;&lt;br /&gt;
 28  EXCEPTION&lt;br /&gt;
 29     WHEN OTHERS THEN&lt;br /&gt;
 30        RAISE pu_failure_excep;&lt;br /&gt;
 31  END log_error;&lt;br /&gt;
 32  /&lt;br /&gt;
Procedure created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop sequence system_error_id;&lt;br /&gt;
Sequence dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table system_errors;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Use trigger to keep data consistency==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table ord&lt;br /&gt;
  2          (&lt;br /&gt;
  3           order_no               integer         primary key&lt;br /&gt;
  4          ,empl_no                integer&lt;br /&gt;
  5          ,order_date             date not null&lt;br /&gt;
  6          ,total_order_price      number(7,2)&lt;br /&gt;
  7          ,deliver_date           date&lt;br /&gt;
  8          ,deliver_time           varchar2(7)&lt;br /&gt;
  9          ,payment_method         varchar2(2)&lt;br /&gt;
 10          ,emp_no                 number(3,0)&lt;br /&gt;
 11          ,deliver_name           varchar2(35)&lt;br /&gt;
 12          ,gift_message           varchar2(100)&lt;br /&gt;
 13           );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into ord(order_no,empl_no,order_date,total_order_price,deliver_date,deliver_time,payment_method,emp_no,deliver_name,gift_message)&lt;br /&gt;
  2  values(1,1,add_months(sysdate, -1), 235.00, &amp;quot;14-Feb-1999&amp;quot;, &amp;quot;12 noon&amp;quot;, &amp;quot;CA&amp;quot;,1, null, &amp;quot;Gift for wife&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into ord(order_no  ,empl_no ,order_date ,total_order_price ,deliver_date ,deliver_time ,payment_method ,emp_no,deliver_name ,gift_message )&lt;br /&gt;
  2  values(2,1,add_months(sysdate, -2), 50.98, &amp;quot;14-feb-1999&amp;quot;, &amp;quot;1 pm&amp;quot;, &amp;quot;CA&amp;quot;,7, &amp;quot;Rose&amp;quot;, &amp;quot;Happy Valentines Day to Mother&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into ord(order_no  ,empl_no ,order_date ,total_order_price ,deliver_date ,deliver_time,payment_method ,emp_no,deliver_name ,gift_message )&lt;br /&gt;
  2  values(3, 2,add_months(sysdate, -3), 35.99, &amp;quot;14-feb-1999&amp;quot;, &amp;quot;1 pm&amp;quot;, &amp;quot;VS&amp;quot;,2, &amp;quot;Ruby&amp;quot;, &amp;quot;Happy Valentines Day to Mother&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into ord(order_no  ,empl_no ,order_date ,total_order_price ,deliver_date ,deliver_time,payment_method ,emp_no,deliver_name ,gift_message )&lt;br /&gt;
  2  values(4, 2,add_months(sysdate, -4), 19.95, &amp;quot;14-feb-1999&amp;quot;, &amp;quot;5 pm&amp;quot;, &amp;quot;CA&amp;quot;,2, &amp;quot;Coy&amp;quot;, &amp;quot;Happy Valentines Day to You&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into ord(order_no  ,empl_no ,order_date ,total_order_price ,deliver_date ,deliver_time,payment_method ,emp_no,deliver_name ,gift_message )&lt;br /&gt;
  2  values(7, 9,add_months(sysdate, -7), 35.95, &amp;quot;21-jun-1999&amp;quot;, &amp;quot;12 noon&amp;quot;, &amp;quot;VS&amp;quot;, 2, &amp;quot;Fill&amp;quot;, &amp;quot;Happy Birthday from Joe&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into ord(order_no  ,empl_no ,order_date ,total_order_price ,deliver_date ,deliver_time,payment_method ,emp_no,deliver_name ,gift_message )&lt;br /&gt;
  2  values (8, 12, add_months(sysdate, -8), 35.95, &amp;quot;1-jan-2000&amp;quot;, &amp;quot;12 noon&amp;quot;, &amp;quot;DI&amp;quot;,3, &amp;quot;Laura&amp;quot;, &amp;quot;Happy New Year&amp;quot;&amp;quot;s from Lawrence&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into ord(order_no  ,empl_no ,order_date ,total_order_price ,deliver_date ,deliver_time,payment_method ,emp_no,deliver_name ,gift_message )&lt;br /&gt;
  2  values (9, 12, add_months(sysdate, -9), 75.95, &amp;quot;2-jan-2000&amp;quot;, &amp;quot;12 noon&amp;quot;, &amp;quot;CA&amp;quot;,7, &amp;quot;Sara&amp;quot;, &amp;quot;Happy Birthday from Lawrence&amp;quot; );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into ord(order_no  ,empl_no ,order_date ,total_order_price ,deliver_date ,deliver_time,payment_method ,emp_no,deliver_name ,gift_message )&lt;br /&gt;
  2  values(10, 4, add_months(sysdate, -10), 19.95, sysdate, &amp;quot;2:30 pm&amp;quot;, &amp;quot;VG&amp;quot;,2, &amp;quot;OK&amp;quot;, &amp;quot;Happy Valentines Day to You&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into ord(order_no  ,empl_no ,order_date ,total_order_price ,deliver_date ,deliver_time,payment_method ,emp_no,deliver_name ,gift_message )&lt;br /&gt;
  2  values(11, 2, add_months(sysdate, -11), 30.00, sysdate+2, &amp;quot;1:30 pm&amp;quot;, &amp;quot;VG&amp;quot;,2, &amp;quot;Hi&amp;quot;, &amp;quot;Happy Birthday Day to You&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into ord(order_no  ,empl_no ,order_date ,total_order_price ,deliver_date ,deliver_time,payment_method ,emp_no,deliver_name ,gift_message)&lt;br /&gt;
  2  values(12, 7, add_months(sysdate, -12), 21.95, sysdate-2, &amp;quot;3:30 pm&amp;quot;, &amp;quot;CA&amp;quot;,2, &amp;quot;Jack&amp;quot;, &amp;quot;Happy Birthday Day to You&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into ord(order_no  ,empl_no ,order_date ,total_order_price ,deliver_date ,deliver_time,payment_method ,emp_no,deliver_name ,gift_message)&lt;br /&gt;
  2  values(13, 7, add_months(sysdate, -1), 21.95, sysdate, &amp;quot;3:30 pm&amp;quot;, &amp;quot;CA&amp;quot;,2, &amp;quot;Jay&amp;quot;, &amp;quot;Thanks for giving 100%!&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create table ord_item&lt;br /&gt;
  2          (&lt;br /&gt;
  3           order_no               integer&lt;br /&gt;
  4          ,product_id             integer&lt;br /&gt;
  5          ,quantity               number(4,0)&lt;br /&gt;
  6          ,item_price                 number(7,2)&lt;br /&gt;
  7        ,total_order_item_price   number(9,2)&lt;br /&gt;
  8          ,primary key (order_no ,product_id)&lt;br /&gt;
  9          );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(1,   2,  10, 23.00 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(2, 1, 1, 23.00 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(2, 5, 1, 10.50 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(2, 8, 1, 17.48 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(3, 8, 1, 35.99 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(4, 7, 1, 19.95 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(5, 5, 1, 10.95 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(6, 8, 1, 22.95 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(7, 1, 6, 15.00 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(7, 5, 1, 10.50 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(7, 8, 1, 10.45 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(8, 8, 1, 35.95 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(9, 8, 1, 65.45 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(9, 5, 1, 10.50 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(10, 3, 1, 19.95 );&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into ord_item (order_no, product_id, quantity, item_price) values(11, 8, 1, 30.00);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace trigger tr_total_order_price&lt;br /&gt;
  2  after&lt;br /&gt;
  3  update of item_price or insert or delete&lt;br /&gt;
  4  on ord_item&lt;br /&gt;
  5  for each row&lt;br /&gt;
  6  declare&lt;br /&gt;
  7      v_change_in_price  number;&lt;br /&gt;
  8      v_order_no number;&lt;br /&gt;
  9  begin&lt;br /&gt;
 10  if inserting then&lt;br /&gt;
 11      v_change_in_price := :new.item_price * :new.quantity ;&lt;br /&gt;
 12      v_order_no := :new.order_no;&lt;br /&gt;
 13      dbms_output.put_line(&amp;quot;inserting&amp;quot;);&lt;br /&gt;
 14  elsif updating then&lt;br /&gt;
 15      v_change_in_price := (:new.item_price * :new.quantity) - (:old.item_price * :old.quantity) ;&lt;br /&gt;
 16      v_order_no := :old.order_no;&lt;br /&gt;
 17      dbms_output.put_line(&amp;quot;updating&amp;quot;);&lt;br /&gt;
 18  else&lt;br /&gt;
 19      v_change_in_price := (:old.item_price * :old.quantity)  * -1;&lt;br /&gt;
 20      v_order_no := :old.order_no;&lt;br /&gt;
 21      dbms_output.put_line(&amp;quot;deleting&amp;quot;);&lt;br /&gt;
 22  end if;&lt;br /&gt;
 23&lt;br /&gt;
 24  update ord&lt;br /&gt;
 25  set total_order_price = total_order_price + v_change_in_price&lt;br /&gt;
 26  where order_no = v_order_no;&lt;br /&gt;
 27  end;&lt;br /&gt;
 28  /&lt;br /&gt;
Trigger created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; update ord_item set item_price = 25 where order_no = 7 and product_id = 5 ;&lt;br /&gt;
1 row updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table ord;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table ord_item;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>