<?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%2FTrigger_on_a_view</id>
		<title>Oracle PL/SQL Tutorial/Trigger/Trigger on a view - История изменений</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%2FTrigger_on_a_view"/>
		<link rel="alternate" type="text/html" href="http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Trigger/Trigger_on_a_view&amp;action=history"/>
		<updated>2026-05-24T21:42:08Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL_Tutorial/Trigger/Trigger_on_a_view&amp;diff=3577&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/Trigger_on_a_view&amp;diff=3577&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/Trigger_on_a_view&amp;diff=3578&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/Trigger_on_a_view&amp;diff=3578&amp;oldid=prev"/>
				<updated>2010-05-26T10:07:21Z</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;== INSTEAD OF triggers==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;INSTEAD OF triggers exist only on views.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Their main purpose is to perform data modifications of views that are not otherwise updatable.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;The following view isn&amp;quot;t updatable because of the ORDER BY clause:&amp;lt;/p&amp;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; -- create demo table&lt;br /&gt;
SQL&amp;gt; create table Employee(&lt;br /&gt;
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL,&lt;br /&gt;
  3    First_Name         VARCHAR2(10 BYTE),&lt;br /&gt;
  4    Last_Name          VARCHAR2(10 BYTE),&lt;br /&gt;
  5    Start_Date         DATE,&lt;br /&gt;
  6    End_Date           DATE,&lt;br /&gt;
  7    Salary             Number(8,2),&lt;br /&gt;
  8    City               VARCHAR2(10 BYTE),&lt;br /&gt;
  9    Description        VARCHAR2(15 BYTE)&lt;br /&gt;
 10  )&lt;br /&gt;
 11  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2               values (&amp;quot;01&amp;quot;,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20060725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;02&amp;quot;,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;, to_date(&amp;quot;19760321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19860221&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;03&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,   to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19900315&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;04&amp;quot;,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,    to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19990421&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;05&amp;quot;,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,   to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980808&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;06&amp;quot;,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,   to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19960104&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;07&amp;quot;,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,   to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;08&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20020415&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&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; -- display data in the table&lt;br /&gt;
SQL&amp;gt; select * from Employee&lt;br /&gt;
  2  /&lt;br /&gt;
&lt;br /&gt;
ID   FIRST_NAME           LAST_NAME            START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- -------------------- -------------------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason                Martin               25-JUL-96 25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison               Mathews              21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James                Smith                12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia                Rice                 24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert               Black                15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda                Green                30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David                Larry                31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James                Cat                  17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
8 rows selected.&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 view v_employee as&lt;br /&gt;
  2  select id, first_Name&lt;br /&gt;
  3  from employee&lt;br /&gt;
  4  order by first_Name;&lt;br /&gt;
View created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace trigger v_emp_iu&lt;br /&gt;
  2  INSTEAD OF UPDATE&lt;br /&gt;
  3  on v_employee&lt;br /&gt;
  4  declare&lt;br /&gt;
  5      v_error VARCHAR2(256);&lt;br /&gt;
  6  begin&lt;br /&gt;
  7      if updating(&amp;quot;ID&amp;quot;)&lt;br /&gt;
  8      then&lt;br /&gt;
  9          v_error:=&amp;quot;You cannot update the PK!&amp;quot;;&lt;br /&gt;
 10          raise_application_error (-20999,v_error);&lt;br /&gt;
 11      else&lt;br /&gt;
 12          update employee&lt;br /&gt;
 13          set first_Name = :new.first_Name&lt;br /&gt;
 14          where id = :old.id;&lt;br /&gt;
 15      end if;&lt;br /&gt;
 16  end;&lt;br /&gt;
 17&lt;br /&gt;
 18  update v_employee set first_name=&amp;quot;aa&amp;quot;;&lt;br /&gt;
 19&lt;br /&gt;
 20  update v_employee set id = 0;&lt;br /&gt;
 21&lt;br /&gt;
 22&lt;br /&gt;
 23&lt;br /&gt;
 24&lt;br /&gt;
 25&lt;br /&gt;
 26  -- clean the table&lt;br /&gt;
 27  drop table Employee&lt;br /&gt;
 28  /&lt;br /&gt;
Warning: Trigger created with compilation errors.&lt;br /&gt;
SQL&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== ORA-01733: virtual column not allowed here==&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;&lt;br /&gt;
SQL&amp;gt; create table employee&lt;br /&gt;
  2          (&lt;br /&gt;
  3           empl_no                integer         primary key&lt;br /&gt;
  4          ,lastname               varchar2(20)    not null&lt;br /&gt;
  5          ,firstname              varchar2(15)    not null&lt;br /&gt;
  6          ,midinit                varchar2(1)&lt;br /&gt;
  7          ,street                 varchar2(30)&lt;br /&gt;
  8          ,city                   varchar2(20)&lt;br /&gt;
  9          ,state                  varchar2(2)&lt;br /&gt;
 10          ,zip                    varchar2(5)&lt;br /&gt;
 11          ,zip_4                  varchar2(4)&lt;br /&gt;
 12          ,area_code              varchar2(3)&lt;br /&gt;
 13          ,phone                  varchar2(8)&lt;br /&gt;
 14          ,company_name           varchar2(50));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(empl_no,lastname,firstname,midinit,street,city,state,zip,zip_4,area_code,phone,company_name)&lt;br /&gt;
  2  values(1,&amp;quot;Jones&amp;quot;,&amp;quot;Joe&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;10 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;11111&amp;quot;,&amp;quot;1111&amp;quot;,&amp;quot;111&amp;quot;, &amp;quot;111-1111&amp;quot;,&amp;quot;A Company&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(empl_no,lastname,firstname,midinit,street,city,state,zip,zip_4,area_code,phone,company_name)&lt;br /&gt;
  2  values(2,&amp;quot;Smith&amp;quot;,&amp;quot;Sue&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;20 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;22222&amp;quot;,&amp;quot;2222&amp;quot;,&amp;quot;222&amp;quot;, &amp;quot;222-111&amp;quot;,&amp;quot;B Company&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(empl_no,lastname,firstname,midinit,street,city,state,zip,zip_4,area_code,phone,company_name)&lt;br /&gt;
  2  values(3,&amp;quot;Anderson&amp;quot;,&amp;quot;Peggy&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;500 St&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;33333&amp;quot;,&amp;quot;3333&amp;quot;,&amp;quot;333&amp;quot;, &amp;quot;333-3333&amp;quot;,&amp;quot;C Company&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(empl_no,lastname,firstname,midinit,street,city,state,zip,zip_4,area_code,phone,company_name)&lt;br /&gt;
  2  values(4,&amp;quot;Andy&amp;quot;,&amp;quot;Jill&amp;quot;, null,&amp;quot;930 St&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;44444&amp;quot;,&amp;quot;4444&amp;quot;,&amp;quot;212&amp;quot;, &amp;quot;634-7733&amp;quot;,&amp;quot;D Company&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(empl_no,lastname,firstname,midinit,street,city,state,zip,zip_4,area_code,phone,company_name)&lt;br /&gt;
  2  values(5,&amp;quot;OK&amp;quot;,&amp;quot;Carl&amp;quot;,&amp;quot;L&amp;quot;,&amp;quot;19 Drive&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;55555&amp;quot;,&amp;quot;3234&amp;quot;,&amp;quot;212&amp;quot;, &amp;quot;243-4243&amp;quot;,&amp;quot;E Company&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(empl_no,lastname,firstname,midinit,street,city,state,zip,zip_4,area_code,phone,company_name)&lt;br /&gt;
  2  values(6,&amp;quot;Peter&amp;quot;,&amp;quot;Jee&amp;quot;,&amp;quot;Q&amp;quot;,&amp;quot;38 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;66666&amp;quot;,&amp;quot;4598&amp;quot;,&amp;quot;212&amp;quot;, &amp;quot;454-5443&amp;quot;,&amp;quot;F Inc&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(empl_no,lastname,firstname,midinit,street,city,state,zip,zip_4,area_code,phone,company_name)&lt;br /&gt;
  2  values(7,&amp;quot;Baker&amp;quot;,&amp;quot;Paul&amp;quot;,&amp;quot;V&amp;quot;,&amp;quot;738 St.&amp;quot;,&amp;quot;Queens&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;77777&amp;quot;,&amp;quot;3842&amp;quot;,&amp;quot;718&amp;quot;, &amp;quot;664-4333&amp;quot;,&amp;quot;G Inc&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(empl_no,lastname,firstname,midinit,street,city,state,zip,zip_4,area_code,phone,company_name)&lt;br /&gt;
  2  values(8,&amp;quot;Young&amp;quot;,&amp;quot;Steve&amp;quot;,&amp;quot;J&amp;quot;,&amp;quot;388 Ave&amp;quot;,&amp;quot;New York&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;88888&amp;quot;,&amp;quot;3468&amp;quot;,&amp;quot;212&amp;quot;, &amp;quot;456-4566&amp;quot;,&amp;quot;H Associates Inc&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(empl_no,lastname,firstname,midinit,street,city,state,zip,zip_4,area_code,phone,company_name)&lt;br /&gt;
  2  values(9,&amp;quot;Mona&amp;quot;,&amp;quot;Joe&amp;quot;,&amp;quot;T&amp;quot;,&amp;quot;9300 Ave&amp;quot;,&amp;quot;Kansas City&amp;quot;,&amp;quot;MO&amp;quot;,&amp;quot;99999&amp;quot;,&amp;quot;3658&amp;quot;,&amp;quot;415&amp;quot;, &amp;quot;456-4563&amp;quot;,&amp;quot;J Inc&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(empl_no,lastname,firstname,midinit,street,city,state,zip,zip_4,area_code,phone,company_name)&lt;br /&gt;
  2  values(10,&amp;quot;Hackett&amp;quot;,&amp;quot;Karen&amp;quot;,&amp;quot;S&amp;quot;,&amp;quot;Kings Rd. Apt 833&amp;quot;,&amp;quot;Bellmore&amp;quot;,&amp;quot;NY&amp;quot;,&amp;quot;61202&amp;quot;,&amp;quot;3898&amp;quot;,&amp;quot;516&amp;quot;, &amp;quot;767-5677&amp;quot;,&amp;quot;AA Inc&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into employee(empl_no,lastname,firstname,midinit,street,city,state,zip,zip_4,area_code,phone,company_name)&lt;br /&gt;
  2  values(11,&amp;quot;Bob&amp;quot;,&amp;quot;Jack&amp;quot;,&amp;quot;S&amp;quot;,&amp;quot;12 Giant Rd.&amp;quot;,&amp;quot;Newark&amp;quot;,&amp;quot;NJ&amp;quot;,&amp;quot;27377&amp;quot;,&amp;quot;3298&amp;quot;,&amp;quot;908&amp;quot;, &amp;quot;123-7367&amp;quot;,&amp;quot;Z Associates&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;  create or replace view phone_list as&lt;br /&gt;
  2     select empl_no,&lt;br /&gt;
  3     firstname || &amp;quot; &amp;quot; || midinit || &amp;quot;. &amp;quot; || lastname as name,&lt;br /&gt;
  4     &amp;quot;(&amp;quot; || area_code || &amp;quot;)&amp;quot; || phone as telephone#&lt;br /&gt;
  5       from employee;&lt;br /&gt;
View created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; update phone_list&lt;br /&gt;
  2      set telephone#  = &amp;quot;(212)555-1212&amp;quot;&lt;br /&gt;
  3      where empl_no = 1;&lt;br /&gt;
    set telephone#  = &amp;quot;(212)555-1212&amp;quot;&lt;br /&gt;
        *&lt;br /&gt;
ERROR at line 2:&lt;br /&gt;
ORA-01733: virtual column not allowed here&lt;br /&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;
== Trigger on a view==&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; -- create demo table&lt;br /&gt;
SQL&amp;gt; create table Employee(&lt;br /&gt;
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL,&lt;br /&gt;
  3    First_Name         VARCHAR2(10 BYTE),&lt;br /&gt;
  4    Last_Name          VARCHAR2(10 BYTE),&lt;br /&gt;
  5    Start_Date         DATE,&lt;br /&gt;
  6    End_Date           DATE,&lt;br /&gt;
  7    Salary             Number(8,2),&lt;br /&gt;
  8    City               VARCHAR2(10 BYTE),&lt;br /&gt;
  9    Description        VARCHAR2(15 BYTE)&lt;br /&gt;
 10  )&lt;br /&gt;
 11  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2               values (&amp;quot;01&amp;quot;,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20060725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;02&amp;quot;,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;, to_date(&amp;quot;19760321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19860221&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;03&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,   to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19900315&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;04&amp;quot;,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,    to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19990421&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;05&amp;quot;,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,   to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980808&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;06&amp;quot;,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,   to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19960104&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;07&amp;quot;,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,   to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;08&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20020415&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&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; -- display data in the table&lt;br /&gt;
SQL&amp;gt; select * from Employee&lt;br /&gt;
  2  /&lt;br /&gt;
&lt;br /&gt;
ID   FIRST_NAME LAST_NAME  START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- ---------- ---------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason      Martin     25-JUL-96 25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison     Mathews    21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James      Smith      12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia      Rice       24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert     Black      15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda      Green      30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David      Larry      31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James      Cat        17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE VIEW emp_data AS&lt;br /&gt;
  2  SELECT id, first_name FROM employee;&lt;br /&gt;
View created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TRIGGER emp_name_change&lt;br /&gt;
  2  INSTEAD OF UPDATE ON emp_data&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4      IF (:new.first_name &amp;lt;&amp;gt; :old.first_name)&lt;br /&gt;
  5      OR (:old.first_name IS NULL AND :new.first_name IS NOT NULL) THEN&lt;br /&gt;
  6          UPDATE employee&lt;br /&gt;
  7          SET first_name = :new.first_name WHERE id = :new.id;&lt;br /&gt;
  8      END IF;&lt;br /&gt;
  9  END;&lt;br /&gt;
 10  /&lt;br /&gt;
Trigger 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; -- clean the table&lt;br /&gt;
SQL&amp;gt; drop table Employee&lt;br /&gt;
  2  /&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== Trigger on a view with user-defined types==&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 EMP (EMPNO NUMBER(4) NOT NULL,&lt;br /&gt;
  2                    ENAME VARCHAR2(10),&lt;br /&gt;
  3                    JOB VARCHAR2(9),&lt;br /&gt;
  4                    MGR NUMBER(4),&lt;br /&gt;
  5                    HIREDATE DATE,&lt;br /&gt;
  6                    SAL NUMBER(7, 2),&lt;br /&gt;
  7                    COMM NUMBER(7, 2),&lt;br /&gt;
  8                    DEPTNO NUMBER(2));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7369, &amp;quot;SMITH&amp;quot;, &amp;quot;CLERK&amp;quot;,    7902, TO_DATE(&amp;quot;17-DEC-1980&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 800, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7499, &amp;quot;ALLEN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;20-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1600, 300, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7521, &amp;quot;WARD&amp;quot;,  &amp;quot;SALESMAN&amp;quot;, 7698, TO_DATE(&amp;quot;22-FEB-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 500, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7566, &amp;quot;JONES&amp;quot;, &amp;quot;MANAGER&amp;quot;,  7839, TO_DATE(&amp;quot;2-APR-1981&amp;quot;,  &amp;quot;DD-MON-YYYY&amp;quot;), 2975, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7654, &amp;quot;MARTIN&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;28-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1250, 1400, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7698, &amp;quot;BLAKE&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;1-MAY-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2850, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7782, &amp;quot;CLARK&amp;quot;, &amp;quot;MANAGER&amp;quot;, 7839,TO_DATE(&amp;quot;9-JUN-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 2450, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7788, &amp;quot;SCOTT&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;09-DEC-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7839, &amp;quot;KING&amp;quot;, &amp;quot;PRESIDENT&amp;quot;, NULL,TO_DATE(&amp;quot;17-NOV-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 5000, NULL, 10);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7844, &amp;quot;TURNER&amp;quot;, &amp;quot;SALESMAN&amp;quot;, 7698,TO_DATE(&amp;quot;8-SEP-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1500, 0, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7876, &amp;quot;ADAMS&amp;quot;, &amp;quot;CLERK&amp;quot;, 7788,TO_DATE(&amp;quot;12-JAN-1983&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1100, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7900, &amp;quot;JAMES&amp;quot;, &amp;quot;CLERK&amp;quot;, 7698,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 950, NULL, 30);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7902, &amp;quot;FORD&amp;quot;, &amp;quot;ANALYST&amp;quot;, 7566,TO_DATE(&amp;quot;3-DEC-1981&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 3000, NULL, 20);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO EMP VALUES (7934, &amp;quot;MILLER&amp;quot;, &amp;quot;CLERK&amp;quot;, 7782,TO_DATE(&amp;quot;23-JAN-1982&amp;quot;, &amp;quot;DD-MON-YYYY&amp;quot;), 1300, NULL, 10);&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 DEPT (DEPTNO NUMBER(2),DNAME VARCHAR2(14),LOC VARCHAR2(13) );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (10, &amp;quot;ACCOUNTING&amp;quot;, &amp;quot;NEW YORK&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (20, &amp;quot;RESEARCH&amp;quot;, &amp;quot;DALLAS&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (30, &amp;quot;SALES&amp;quot;, &amp;quot;CHICAGO&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; INSERT INTO DEPT VALUES (40, &amp;quot;OPERATIONS&amp;quot;, &amp;quot;BOSTON&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type emp_type&lt;br /&gt;
  2  as object&lt;br /&gt;
  3  (empno       number(4),&lt;br /&gt;
  4   ename       varchar2(10),&lt;br /&gt;
  5   job         varchar2(9),&lt;br /&gt;
  6   mgr         number(4),&lt;br /&gt;
  7   hiredate    date,&lt;br /&gt;
  8   sal         number(7, 2),&lt;br /&gt;
  9   comm        number(7, 2)&lt;br /&gt;
 10  );&lt;br /&gt;
 11  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type emp_tab_type&lt;br /&gt;
  2  as table of emp_type&lt;br /&gt;
  3  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace type dept_type&lt;br /&gt;
  2  as object&lt;br /&gt;
  3  ( deptno number(2),&lt;br /&gt;
  4    dname  varchar2(14),&lt;br /&gt;
  5    loc    varchar2(13),&lt;br /&gt;
  6    emps   emp_tab_type&lt;br /&gt;
  7  )&lt;br /&gt;
  8  /&lt;br /&gt;
Type created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace view dept_or&lt;br /&gt;
  2  of dept_type&lt;br /&gt;
  3  with object identifier(deptno)&lt;br /&gt;
  4  as&lt;br /&gt;
  5  select deptno, dname, loc,&lt;br /&gt;
  6         cast ( multiset (&lt;br /&gt;
  7                 select empno, ename, job, mgr, hiredate, sal, comm&lt;br /&gt;
  8                   from emp&lt;br /&gt;
  9                  where emp.deptno = dept.deptno )&lt;br /&gt;
 10                as emp_tab_type )&lt;br /&gt;
 11    from dept&lt;br /&gt;
 12  /&lt;br /&gt;
View created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace trigger EMPS_IO_UPDATE&lt;br /&gt;
  2  instead of UPDATE on nested table emps of dept_or&lt;br /&gt;
  3  begin&lt;br /&gt;
  4      if ( :new.empno = :old.empno )&lt;br /&gt;
  5      then&lt;br /&gt;
  6          update emp&lt;br /&gt;
  7             set ename = :new.ename, job = :new.job, mgr = :new.mgr,&lt;br /&gt;
  8              hiredate = :new.hiredate, sal = :new.sal, comm = :new.rum&lt;br /&gt;
  9           where empno = :old.empno;&lt;br /&gt;
 10      else&lt;br /&gt;
 11          raise_application_error(-20001,&amp;quot;Empno cannot be updated&amp;quot; );&lt;br /&gt;
 12      end if;&lt;br /&gt;
 13  end;&lt;br /&gt;
 14  /&lt;br /&gt;
Trigger created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; update TABLE ( select p.emps&lt;br /&gt;
  2                   from dept_or p&lt;br /&gt;
  3                  where deptno = 20 )&lt;br /&gt;
  4     set ename = lower(ename)&lt;br /&gt;
  5  /&lt;br /&gt;
5 rows updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; select ename from emp where deptno = 20;&lt;br /&gt;
&lt;br /&gt;
ENAME&lt;br /&gt;
----------&lt;br /&gt;
smith&lt;br /&gt;
jones&lt;br /&gt;
scott&lt;br /&gt;
adams&lt;br /&gt;
ford&lt;br /&gt;
SQL&amp;gt; select ename&lt;br /&gt;
  2    from TABLE( select p.emps&lt;br /&gt;
  3                  from dept_or p&lt;br /&gt;
  4                 where deptno = 20 );&lt;br /&gt;
&lt;br /&gt;
ENAME&lt;br /&gt;
----------&lt;br /&gt;
smith&lt;br /&gt;
jones&lt;br /&gt;
scott&lt;br /&gt;
adams&lt;br /&gt;
ford&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type dept_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type emp_tab_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop type emp_type;&lt;br /&gt;
Type dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table emp;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop table dept;&lt;br /&gt;
Table dropped.&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
== using the UPDATING (&amp;quot;column_name&amp;quot;) clause==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;All INSTEAD OF triggers are fired for each row and you cannot narrow down the event by column.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Instead you can check to see what columns are updated in the body of the trigger by using the UPDATING (&amp;quot;column_name&amp;quot;) clause.&amp;lt;/p&amp;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; -- create demo table&lt;br /&gt;
SQL&amp;gt; create table Employee(&lt;br /&gt;
  2    ID                 VARCHAR2(4 BYTE)         NOT NULL,&lt;br /&gt;
  3    First_Name         VARCHAR2(10 BYTE),&lt;br /&gt;
  4    Last_Name          VARCHAR2(10 BYTE),&lt;br /&gt;
  5    Start_Date         DATE,&lt;br /&gt;
  6    End_Date           DATE,&lt;br /&gt;
  7    Salary             Number(8,2),&lt;br /&gt;
  8    City               VARCHAR2(10 BYTE),&lt;br /&gt;
  9    Description        VARCHAR2(15 BYTE)&lt;br /&gt;
 10  )&lt;br /&gt;
 11  /&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- prepare data&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2               values (&amp;quot;01&amp;quot;,&amp;quot;Jason&amp;quot;,    &amp;quot;Martin&amp;quot;,  to_date(&amp;quot;19960725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20060725&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1234.56, &amp;quot;Toronto&amp;quot;,  &amp;quot;Programmer&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;02&amp;quot;,&amp;quot;Alison&amp;quot;,   &amp;quot;Mathews&amp;quot;, to_date(&amp;quot;19760321&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19860221&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6661.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;03&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Smith&amp;quot;,   to_date(&amp;quot;19781212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19900315&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 6544.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;04&amp;quot;,&amp;quot;Celia&amp;quot;,    &amp;quot;Rice&amp;quot;,    to_date(&amp;quot;19821024&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19990421&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2344.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary,  City,       Description)&lt;br /&gt;
  2                values(&amp;quot;05&amp;quot;,&amp;quot;Robert&amp;quot;,   &amp;quot;Black&amp;quot;,   to_date(&amp;quot;19840115&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980808&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 2334.78, &amp;quot;Vancouver&amp;quot;,&amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;06&amp;quot;,&amp;quot;Linda&amp;quot;,    &amp;quot;Green&amp;quot;,   to_date(&amp;quot;19870730&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19960104&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 4322.78,&amp;quot;New York&amp;quot;,  &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;07&amp;quot;,&amp;quot;David&amp;quot;,    &amp;quot;Larry&amp;quot;,   to_date(&amp;quot;19901231&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;19980212&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 7897.78,&amp;quot;New York&amp;quot;,  &amp;quot;Manager&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; insert into Employee(ID,  First_Name, Last_Name, Start_Date,                     End_Date,                       Salary, City,        Description)&lt;br /&gt;
  2                values(&amp;quot;08&amp;quot;,&amp;quot;James&amp;quot;,    &amp;quot;Cat&amp;quot;,     to_date(&amp;quot;19960917&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), to_date(&amp;quot;20020415&amp;quot;,&amp;quot;YYYYMMDD&amp;quot;), 1232.78,&amp;quot;Vancouver&amp;quot;, &amp;quot;Tester&amp;quot;)&lt;br /&gt;
  3  /&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- display data in the table&lt;br /&gt;
SQL&amp;gt; select * from Employee&lt;br /&gt;
  2  /&lt;br /&gt;
ID   FIRST_NAME           LAST_NAME            START_DAT END_DATE      SALARY CITY       DESCRIPTION&lt;br /&gt;
---- -------------------- -------------------- --------- --------- ---------- ---------- ---------------&lt;br /&gt;
01   Jason                Martin               25-JUL-96 25-JUL-06    1234.56 Toronto    Programmer&lt;br /&gt;
02   Alison               Mathews              21-MAR-76 21-FEB-86    6661.78 Vancouver  Tester&lt;br /&gt;
03   James                Smith                12-DEC-78 15-MAR-90    6544.78 Vancouver  Tester&lt;br /&gt;
04   Celia                Rice                 24-OCT-82 21-APR-99    2344.78 Vancouver  Manager&lt;br /&gt;
05   Robert               Black                15-JAN-84 08-AUG-98    2334.78 Vancouver  Tester&lt;br /&gt;
06   Linda                Green                30-JUL-87 04-JAN-96    4322.78 New York   Tester&lt;br /&gt;
07   David                Larry                31-DEC-90 12-FEB-98    7897.78 New York   Manager&lt;br /&gt;
08   James                Cat                  17-SEP-96 15-APR-02    1232.78 Vancouver  Tester&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace view v_employee as&lt;br /&gt;
  2  select id, first_Name&lt;br /&gt;
  3  from employee&lt;br /&gt;
  4  order by first_Name;&lt;br /&gt;
View created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; create or replace trigger v_emp_iu&lt;br /&gt;
  2  INSTEAD OF UPDATE&lt;br /&gt;
  3  on v_employee&lt;br /&gt;
  4  declare&lt;br /&gt;
  5      v_error VARCHAR2(256);&lt;br /&gt;
  6  begin&lt;br /&gt;
  7      if updating(&amp;quot;ID&amp;quot;)&lt;br /&gt;
  8      then&lt;br /&gt;
  9          v_error:=&amp;quot;You cannot update the PK!&amp;quot;;&lt;br /&gt;
 10          raise_application_error (-20999,v_error);&lt;br /&gt;
 11      else&lt;br /&gt;
 12          update employee&lt;br /&gt;
 13          set first_Name = :new.first_Name&lt;br /&gt;
 14          where id = :old.id;&lt;br /&gt;
 15      end if;&lt;br /&gt;
 16  end;&lt;br /&gt;
 17  /&lt;br /&gt;
Trigger created.&lt;br /&gt;
SQL&amp;gt; update v_employee set first_name=&amp;quot;aa&amp;quot;;&lt;br /&gt;
8 rows updated.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; update v_employee set id = 0;&lt;br /&gt;
update v_employee set id = 0&lt;br /&gt;
       *&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-20999: You cannot update the PK!&lt;br /&gt;
ORA-06512: at &amp;quot;sqle.V_EMP_IU&amp;quot;, line 7&lt;br /&gt;
ORA-04088: error during execution of trigger &amp;quot;sqle.V_EMP_IU&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;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; -- clean the table&lt;br /&gt;
SQL&amp;gt; drop table Employee&lt;br /&gt;
  2  /&lt;br /&gt;
Table dropped.&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;&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>