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

	<entry>
		<id>http://www.sqle.ru/index.php?title=Oracle_PL/SQL/Trigger/Trigger_on_View&amp;diff=1641&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/Trigger/Trigger_on_View&amp;diff=1641&amp;oldid=prev"/>
				<updated>2010-05-26T13:45:19Z</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/Trigger/Trigger_on_View&amp;diff=1642&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/Trigger/Trigger_on_View&amp;diff=1642&amp;oldid=prev"/>
				<updated>2010-05-26T09:58:30Z</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;==Create 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;
 &lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE employee(&lt;br /&gt;
  2           emp_id           INTEGER,&lt;br /&gt;
  3           emp_name         VARCHAR2(32),&lt;br /&gt;
  4           supervised_by    INTEGER,&lt;br /&gt;
  5           pay_rate         NUMBER(9,2),&lt;br /&gt;
  6           pay_type         CHAR);&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt; CREATE TABLE department&lt;br /&gt;
  2         (dept_id           INTEGER,&lt;br /&gt;
  3          dept_name         VARCHAR2(32));&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE VIEW emp_public_data AS&lt;br /&gt;
  2      SELECT e.emp_id,&lt;br /&gt;
  3             e.emp_name,&lt;br /&gt;
  4             d.dept_name&lt;br /&gt;
  5      FROM employee e,&lt;br /&gt;
  6           department d;&lt;br /&gt;
View created.&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE TRIGGER emp_name_change&lt;br /&gt;
  2  INSTEAD OF UPDATE ON emp_public_data&lt;br /&gt;
  3  BEGIN&lt;br /&gt;
  4      IF (:new.emp_name &amp;lt;&amp;gt; :old.emp_name)&lt;br /&gt;
  5      OR (:old.emp_name IS NULL AND :new.emp_name IS NOT NULL) THEN&lt;br /&gt;
  6          UPDATE employee&lt;br /&gt;
  7          SET emp_name = :new.emp_name&lt;br /&gt;
  8          WHERE emp_id = :new.emp_id;&lt;br /&gt;
  9      END IF;&lt;br /&gt;
 10  END;&lt;br /&gt;
 11  /&lt;br /&gt;
Trigger created.&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; drop table department;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; &lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Use an instead-of trigger.==&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;
 &lt;br /&gt;
SQL&amp;gt; CREATE TABLE place (&lt;br /&gt;
  2    room_id          NUMBER(5) PRIMARY KEY,&lt;br /&gt;
  3    building         VARCHAR2(15),&lt;br /&gt;
  4    room_number      NUMBER(4),&lt;br /&gt;
  5    number_seats     NUMBER(4),&lt;br /&gt;
  6    description      VARCHAR2(50)&lt;br /&gt;
  7    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO place (room_id, building, room_number, number_seats, description)&lt;br /&gt;
  2             VALUES (20001, &amp;quot;Building 7&amp;quot;, 201, 1000, &amp;quot;Large Lecture Hall&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO place (room_id, building, room_number, number_seats, description)&lt;br /&gt;
  2             VALUES (20002, &amp;quot;Building 6&amp;quot;, 101, 500, &amp;quot;Small Lecture Hall&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO place (room_id, building, room_number, number_seats, description)&lt;br /&gt;
  2             VALUES (20003, &amp;quot;Building 6&amp;quot;, 150, 50, &amp;quot;Discussion Room A&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO place (room_id, building, room_number, number_seats, description)&lt;br /&gt;
  2             VALUES (20004, &amp;quot;Building 6&amp;quot;, 160, 50, &amp;quot;Discussion Room B&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO place (room_id, building, room_number, number_seats,description)&lt;br /&gt;
  2             VALUES (20005, &amp;quot;Building 6&amp;quot;, 170, 50, &amp;quot;Discussion Room C&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO place (room_id, building, room_number, number_seats, description)&lt;br /&gt;
  2             VALUES (20006, &amp;quot;Music Building&amp;quot;, 100, 10, &amp;quot;Music Practice Room&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO place (room_id, building, room_number, number_seats, description)&lt;br /&gt;
  2             VALUES (20007, &amp;quot;Music Building&amp;quot;, 200, 1000, &amp;quot;Concert Room&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO place (room_id, building, room_number, number_seats, description)&lt;br /&gt;
  2             VALUES (20008, &amp;quot;Building 7&amp;quot;, 300, 75, &amp;quot;Discussion Room D&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO place (room_id, building, room_number, number_seats,description)&lt;br /&gt;
  2             VALUES (20009, &amp;quot;Building 7&amp;quot;, 310, 50, &amp;quot;Discussion Room E&amp;quot;);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TABLE session (&lt;br /&gt;
  2    department       CHAR(3),&lt;br /&gt;
  3    course           NUMBER(3),&lt;br /&gt;
  4    description      VARCHAR2(2000),&lt;br /&gt;
  5    max_lecturer     NUMBER(3),&lt;br /&gt;
  6    current_lecturer NUMBER(3),&lt;br /&gt;
  7    num_credits      NUMBER(1),&lt;br /&gt;
  8    room_id          NUMBER(5)&lt;br /&gt;
  9    );&lt;br /&gt;
Table created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;HIS&amp;quot;, 101, &amp;quot;History 101&amp;quot;, 30, 11, 4, 20000);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;HIS&amp;quot;, 301, &amp;quot;History 301&amp;quot;, 30, 0, 4, 20004);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;CS&amp;quot;, 101, &amp;quot;Computer Science 101&amp;quot;, 50, 0, 4, 20001);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;ECN&amp;quot;, 203, &amp;quot;Economics 203&amp;quot;, 15, 0, 3, 20002);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;CS&amp;quot;, 102, &amp;quot;Computer Science 102&amp;quot;, 35, 3, 4, 20003);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;MUS&amp;quot;, 410, &amp;quot;Music 410&amp;quot;, 5, 4, 3, 20005);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;ECN&amp;quot;, 101, &amp;quot;Economics 101&amp;quot;, 50, 0, 4, 20007);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;NUT&amp;quot;, 307, &amp;quot;Nutrition 307&amp;quot;, 20, 2, 4, 20008);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session(department, course, description, max_lecturer, current_lecturer, num_credits, room_id)&lt;br /&gt;
  2              VALUES (&amp;quot;MUS&amp;quot;, 100, &amp;quot;Music 100&amp;quot;, 100, 0, 3, NULL);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE OR REPLACE VIEW session_place AS&lt;br /&gt;
  2    SELECT department, course, building, room_number&lt;br /&gt;
  3    FROM place, session&lt;br /&gt;
  4    WHERE place.room_id = session.room_id;&lt;br /&gt;
View created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT * FROM session_place;&lt;br /&gt;
DEP     COURSE BUILDING        ROOM_NUMBER&lt;br /&gt;
--- ---------- --------------- -----------&lt;br /&gt;
HIS        301 Building 6              160&lt;br /&gt;
CS         101 Building 7              201&lt;br /&gt;
ECN        203 Building 6              101&lt;br /&gt;
CS         102 Building 6              150&lt;br /&gt;
MUS        410 Building 6              170&lt;br /&gt;
ECN        101 Music Building          200&lt;br /&gt;
NUT        307 Building 7              300&lt;br /&gt;
7 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; CREATE TRIGGER sessionRoomsInsert&lt;br /&gt;
  2    INSTEAD OF INSERT ON session_place&lt;br /&gt;
  3  DECLARE&lt;br /&gt;
  4    v_roomID place.room_id%TYPE;&lt;br /&gt;
  5  BEGIN&lt;br /&gt;
  6    SELECT room_id&lt;br /&gt;
  7      INTO v_roomID&lt;br /&gt;
  8      FROM place&lt;br /&gt;
  9      WHERE building = :new.building&lt;br /&gt;
 10      AND room_number = :new.room_number;&lt;br /&gt;
 11&lt;br /&gt;
 12    UPDATE session&lt;br /&gt;
 13      SET room_id = v_roomID&lt;br /&gt;
 14      WHERE department = :new.department&lt;br /&gt;
 15      AND course = :new.course;&lt;br /&gt;
 16  END sessionRoomsInsert;&lt;br /&gt;
 17  /&lt;br /&gt;
Trigger created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; INSERT INTO session_place (department, course, building, room_number)&lt;br /&gt;
  2    VALUES (&amp;quot;MUS&amp;quot;, 100, &amp;quot;Music Building&amp;quot;, 200);&lt;br /&gt;
1 row created.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; SELECT * FROM session_place;&lt;br /&gt;
DEP     COURSE BUILDING        ROOM_NUMBER&lt;br /&gt;
--- ---------- --------------- -----------&lt;br /&gt;
HIS        301 Building 6              160&lt;br /&gt;
CS         101 Building 7              201&lt;br /&gt;
ECN        203 Building 6              101&lt;br /&gt;
CS         102 Building 6              150&lt;br /&gt;
MUS        410 Building 6              170&lt;br /&gt;
ECN        101 Music Building          200&lt;br /&gt;
NUT        307 Building 7              300&lt;br /&gt;
MUS        100 Music Building          200&lt;br /&gt;
8 rows selected.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
SQL&amp;gt; drop view session_place;&lt;br /&gt;
View dropped.&lt;br /&gt;
SQL&amp;gt; drop table session;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt; drop table place;&lt;br /&gt;
Table dropped.&lt;br /&gt;
SQL&amp;gt;&lt;br /&gt;
 &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>