PostgreSQL 9.2.4ʸ�� | ||||
---|---|---|---|---|
前のページ | 上に戻る | 第 37章�롼�륷���ƥ� | 次のページ |
PostgreSQL�ˤ�����ӥ塼�ϥ롼�륷���ƥ��ȤäƼ�������Ƥ��ޤ��� �ºݡ�
CREATE VIEW myview AS SELECT * FROM mytab;
��
CREATE TABLE myview (same column list as mytab); CREATE RULE "_RETURN" AS ON SELECT TO myview DO INSTEAD SELECT * FROM mytab;
��2�ĤΥ��ޥ�ɤδ֤ˤϴ���Ū�ʰ㤤�Ϥ���ޤ��� �ȸ����Τϡ�CREATE VIEW���ޥ�ɤˤ�ä�����Ū�ˤޤä���Ʊ�����ޥ�ɤ��Ԥ��뤫��Ǥ��� ����ˤ������Ѥ⤢��ޤ��� ����1�Ĥ�PostgreSQL�����ƥ५�������Υӥ塼�ˤĤ��Ƥξ���ϥơ��֥�ξ���Ȥޤä���Ʊ��Ǥ���Ȥ������ȤǤ��� ���Τ��ᡢ�ѡ����ˤȤäƤϥơ��֥�ȥӥ塼�δ֤˰㤤�ϰ��ڤ���ޤ��� ������Ʊ����Ρ��Ĥޤ��졼�����Ǥ���
���Ȥ����ޥ�ɤ�INSERT��UPDATE��DELETE�ʤɤǤ��äƤ⡢ON SELECT�롼������Ƥ��䤤��碌���Ф��Ǹ��Ŭ�Ѥ���ޤ��� �����ơ����Υ롼���¾�Υ��ޥ�ɼ���Υ롼��Ȱۤʤ륻�ޥ�ƥ��å�����äƤ��ơ��䤤��碌�ĥ�������������ˡ������ˤ����Τ������ޤ��� �������ä�SELECT�롼�뤬���ֽ��˵��Ҥ���ʤ���Ф����ޤ���
���ߤΤȤ�����ON SELECT�롼��Ǥ�1�ĤΥ�������������줺�������INSTEAD�Ǥ���̵����SELECT���������Ǥʤ���Ф����ޤ��� ��������ϡ����̤Υ桼�������Ƥ⡢�롼�륷���ƥब��ϴ�Ǥ��뤿���ɬ�פǤ��ꡢON SELECT�Υ롼��ϥӥ塼Ʊ�ͤ�ư��˸��ꤵ��ޤ���
�ܾϤ���Ȥ��ƵƤ���Τϡ�����äȤ����黻��2�Ĥη��Υӥ塼�ȡ����ˤ����ε�ǽ�����Ѥ��뤤���Ĥ��Υӥ塼�Ǥ��� �ǽ���̤����餫����ˡ�ε�ǽ�ˤ�ꤢ������¥ơ��֥�Τ褦�˿��ӥ塼�ˤʤ�褦�ˡ�����2�ĤΥӥ塼�Τ�����1�Ĥϡ�INSERT��UPDATE��DELETE�����Ф���롼������ɲä��뤳�Ȥǥ������ޥ�������ޤ��� ���Ƴؤ֤������Ȥ��ƤϷ褷�ƴ�ñ�ǤϤʤ���˿ʤळ�Ȥ����������뤫�⤷��ޤ���¿�����̡����������Ф���Ƭ�κ�������⡢���Ƥ������ƥåפ��Ȥ��ɤ�1�Ĥ����������ɤ��Ǥ��礦��
������Ǥϡ�2�Ĥ��������龮�����ͤ��֤�����äȤ���min�ؿ���ɬ�פȤ��ޤ��� �ؿ��������ϰʲ��Τ褦�ˤ��ޤ���
CREATE FUNCTION min(integer, integer) RETURNS integer AS $$ SELECT CASE WHEN $1 < $2 THEN $1 ELSE $2 END $$ LANGUAGE SQL STRICT;
�ǽ��2�ĤΥ롼�륷���ƥ��������ɬ�פȤ���¥ơ��֥��ʲ��˼����ޤ���
CREATE TABLE shoe_data ( shoename text, -- �ץ饤�ޥꥭ�� sh_avail integer, -- �߸� slcolor text, -- ˾�ޤ�����ɳ�ο� slminlen real, -- ��ɳ�κ�û������ slmaxlen real, -- ��ɳ�κ�Ĺ������ slunit text -- Ĺ����ñ�� ); CREATE TABLE shoelace_data ( sl_name text, -- �ץ饤�ޥꥭ�� sl_avail integer, -- �߸� sl_color text, -- ��ɳ�ο� sl_len real, -- ��ɳ��Ĺ�� sl_unit text -- Ĺ����ñ�� ); CREATE TABLE unit ( un_name text, -- �ץ饤�ޥꥭ�� un_fact real -- cm���Ѵ�����ե����� );
����Ǥ狼�뤫�⤷��ޤ��������Ϸ����Υǡ�����ɽ���Ƥ��ޤ���
�ӥ塼��ʲ��Τ褦�˺������ޤ���
CREATE VIEW shoe AS SELECT sh.shoename, sh.sh_avail, sh.slcolor, sh.slminlen, sh.slminlen * un.un_fact AS slminlen_cm, sh.slmaxlen, sh.slmaxlen * un.un_fact AS slmaxlen_cm, sh.slunit FROM shoe_data sh, unit un WHERE sh.slunit = un.un_name; CREATE VIEW shoelace AS SELECT s.sl_name, s.sl_avail, s.sl_color, s.sl_len, s.sl_unit, s.sl_len * u.un_fact AS sl_len_cm FROM shoelace_data s, unit u WHERE s.sl_unit = u.un_name; CREATE VIEW shoe_ready AS SELECT rsh.shoename, rsh.sh_avail, rsl.sl_name, rsl.sl_avail, min(rsh.sh_avail, rsl.sl_avail) AS total_avail FROM shoe rsh, shoelace rsl WHERE rsl.sl_color = rsh.slcolor AND rsl.sl_len_cm >= rsh.slminlen_cm AND rsl.sl_len_cm <= rsh.slmaxlen_cm;
shoelace�ӥ塼�ʺ�������ִ�ñ�ʥӥ塼���Ѥ�CREATE VIEW���ޥ�ɤϡ�shoelace��졼�����ȡ��䤤��碌�ϰϥơ��֥�����shoelace��졼������Ȥ������Ϥ��ĤǤ⡢Ŭ�Ѥ����٤������롼���¸�ߤ����ܤ�pg_rewrite�˺��ޤ��� �롼��ϥ롼�����SELECT�롼��ϸ����Ĥ��Ȥ��Ǥ��ޤ���Τǡ���SELECT�롼��ΤȤ����Ǽ��夲�ޤ��ˤ�����ʤ�INSTEAD�Ǥ��� �롼������䤤��碌���Ȥϰۤʤ뤳�Ȥ����դ��Ƥ��������� �롼�륢���������䤤��碌������äƤ��ޤ��� ���Υ롼�륢�������ϡ��ӥ塼�������ޥ�����SELECT�Υ��ԡ��Ǥ��롢1�Ĥ��䤤��碌�ĥ�Ǥ���
注意: pg_rewrite���ܤ�NEW��OLD���Ф���2�Ĥ����̤��ϰϥơ��֥���ܤ�SELECT�롼��ˤϴط�����ޤ���
�ǤϤ�����unit��shoe_data��shoelace_data�˥ǡ��������졢�ӥ塼�˴�ñ���䤤��碌��Ԥ��ޤ���
INSERT INTO unit VALUES ('cm', 1.0); INSERT INTO unit VALUES ('m', 100.0); INSERT INTO unit VALUES ('inch', 2.54); INSERT INTO shoe_data VALUES ('sh1', 2, 'black', 70.0, 90.0, 'cm'); INSERT INTO shoe_data VALUES ('sh2', 0, 'black', 30.0, 40.0, 'inch'); INSERT INTO shoe_data VALUES ('sh3', 4, 'brown', 50.0, 65.0, 'cm'); INSERT INTO shoe_data VALUES ('sh4', 3, 'brown', 40.0, 50.0, 'inch'); INSERT INTO shoelace_data VALUES ('sl1', 5, 'black', 80.0, 'cm'); INSERT INTO shoelace_data VALUES ('sl2', 6, 'black', 100.0, 'cm'); INSERT INTO shoelace_data VALUES ('sl3', 0, 'black', 35.0 , 'inch'); INSERT INTO shoelace_data VALUES ('sl4', 8, 'black', 40.0 , 'inch'); INSERT INTO shoelace_data VALUES ('sl5', 4, 'brown', 1.0 , 'm'); INSERT INTO shoelace_data VALUES ('sl6', 0, 'brown', 0.9 , 'm'); INSERT INTO shoelace_data VALUES ('sl7', 7, 'brown', 60 , 'cm'); INSERT INTO shoelace_data VALUES ('sl8', 1, 'brown', 40 , 'inch'); SELECT * FROM shoelace; sl_name | sl_avail | sl_color | sl_len | sl_unit | sl_len_cm -----------+----------+----------+--------+---------+----------- sl1 | 5 | black | 80 | cm | 80 sl2 | 6 | black | 100 | cm | 100 sl7 | 7 | brown | 60 | cm | 60 sl3 | 0 | black | 35 | inch | 88.9 sl4 | 8 | black | 40 | inch | 101.6 sl8 | 1 | brown | 40 | inch | 101.6 sl5 | 4 | brown | 1 | m | 100 sl6 | 0 | brown | 0.9 | m | 90 (8 rows)
����ϡ��ӥ塼���Ф���Ǥ��ñ��SELECT�Ǥ��Τǡ����ε���˥ӥ塼�롼��δ��ܤ��������ޤ��� SELECT * FROM shoelace�ϥѡ����ˤ�äƽ������졢�����䤤��碌�ĥ����������ޤ���
SELECT shoelace.sl_name, shoelace.sl_avail, shoelace.sl_color, shoelace.sl_len, shoelace.sl_unit, shoelace.sl_len_cm FROM shoelace shoelace;
���Υĥ���롼�륷���ƥ���������ޤ��� �롼�륷���ƥ���ϰϥơ��֥�Ȥ������餫�Υ�졼�������Ф��ƥ롼�뤬¸�ߤ��뤫Ĵ�٤ޤ��� shoelace�ʸ������Ǥ�ͣ��Υӥ塼�ˤˤĤ��Ƥ��ϰϥơ��֥���ܤ��������ݡ��䤤��碌�ĥ��_RETURN�롼��Ф��ޤ���
SELECT s.sl_name, s.sl_avail, s.sl_color, s.sl_len, s.sl_unit, s.sl_len * u.un_fact AS sl_len_cm FROM shoelace old, shoelace new, shoelace_data s, unit u WHERE s.sl_unit = u.un_name;
�ӥ塼��Ÿ�����뤿��ˡ���饤����ñ��˥롼��Υ���������䤤��碌�ĥ��������䤤��碌�ϰϥơ��֥�ι��ܤ��ꡢ�ӥ塼�Ȥ��Ƥ��������ϰϥơ��֥���֤������ޤ��� ������줿��̤��䤤��碌�ĥ�ϡ��ʲ��Τ褦�����Ϥ������Ȥۤ�Ʊ���Ǥ���
SELECT shoelace.sl_name, shoelace.sl_avail, shoelace.sl_color, shoelace.sl_len, shoelace.sl_unit, shoelace.sl_len_cm FROM (SELECT s.sl_name, s.sl_avail, s.sl_color, s.sl_len, s.sl_unit, s.sl_len * u.un_fact AS sl_len_cm FROM shoelace_data s, unit u WHERE s.sl_unit = u.un_name) shoelace;
������1�Ĥ����㤤������ޤ��� ���䤤��碌���ϰϥơ��֥뤬2�Ĥ�;ʬ�ʹ���shoelace old��shoelace new����äƤ��뤳�ȤǤ��� �����ι��ܤ����䤤��碌�η��ĥ����Ū�ꥹ�Ȥǻ��Ȥ���ޤ���Τǡ�ľ���䤤��碌�ǤϻȤ��ޤ��� ��饤���Ϥ�������Ѥ��ơ��ӥ塼�Ȥ����ϰϥơ��֥�ι��ܤ˸���¸�ߤ��������������³�ǧ������Ǽ���ޤ��� ������ˡ�ǡ�������줿�䤤��碌��ľ�ܥӥ塼����Ѥ��Ƥ��ʤ��Ƥ⡢���������塼���ϥ桼�������Υӥ塼�˥����������뤿������������¤���äƤ��뤫��ǧ���ޤ���
���줬�ǽ��Ŭ�Ѥ����롼��Ǥ��� �롼�륷���ƥ�ϺǾ�̤��䤤��碌�λĤ�ʤ�����ǤϤ���ʾ夢��ޤ���ˤ��ϰϥơ��֥�ι��ܤ�����å���³���ޤ��� �����ƥ롼�륷���ƥ�ϡ��ɲä��줿���䤤��碌���ϰϥơ��֥�ι��ܤ��ӥ塼�Ȥ��뤫��Ƶ�Ū�˳�ǧ���ޤ� �ʤ�����old��new��Ÿ�����ޤ��� �����Ǥʤ����̵�ºƵ��ˤʤäƤ��ޤ��ޤ����ˡ� ������Ǥ�shoelace_data��unit�Ѥν����롼��Ϥ���ޤ��� �Ǥ���������ϴ��뤷���嵭���ץ��ʤ��Ϥ����ǽ�Ū�ʷ�̤Ȥʤ�ޤ���
���ơ�Ź���֤��Ƥ��뷤ɳ�ʤο��ȥ������ˤ˰��פ��뷤��Ź�ˤ��뤫�������˰��פ��뷤ɳ�κ߸˿���2�ʾ夢�뤫�ɤ������İ������䤤��碌��Ƥߤޤ��礦��
SELECT * FROM shoe_ready WHERE total_avail >= 2; shoename | sh_avail | sl_name | sl_avail | total_avail ----------+----------+---------+----------+------------- sh1 | 2 | sl1 | 5 | 2 sh3 | 4 | sl7 | 7 | 4 (2 rows)
����Υѡ����ν��Ϥϰʲ����䤤��碌�ĥ�Ǥ���
SELECT shoe_ready.shoename, shoe_ready.sh_avail, shoe_ready.sl_name, shoe_ready.sl_avail, shoe_ready.total_avail FROM shoe_ready shoe_ready WHERE shoe_ready.total_avail >= 2;
�ǽ��Ŭ�Ѥ����롼���shoe_ready�ӥ塼�ѤΤ�Τǡ��䤤��碌�ĥ�ˤ������̤ϰʲ��Τ褦�ˤʤ�ޤ���
SELECT shoe_ready.shoename, shoe_ready.sh_avail, shoe_ready.sl_name, shoe_ready.sl_avail, shoe_ready.total_avail FROM (SELECT rsh.shoename, rsh.sh_avail, rsl.sl_name, rsl.sl_avail, min(rsh.sh_avail, rsl.sl_avail) AS total_avail FROM shoe rsh, shoelace rsl WHERE rsl.sl_color = rsh.slcolor AND rsl.sl_len_cm >= rsh.slminlen_cm AND rsl.sl_len_cm <= rsh.slmaxlen_cm) shoe_ready WHERE shoe_ready.total_avail >= 2;
Ʊ���褦�ˡ�shoe��shoelace�ѤΥ롼������䤤��碌���ϰϥơ��֥�Ȥ������Ѥ��졢3��٥�κǽ��䤤��碌�ĥ�ؤ�Ƴ���ޤ���
SELECT shoe_ready.shoename, shoe_ready.sh_avail, shoe_ready.sl_name, shoe_ready.sl_avail, shoe_ready.total_avail FROM (SELECT rsh.shoename, rsh.sh_avail, rsl.sl_name, rsl.sl_avail, min(rsh.sh_avail, rsl.sl_avail) AS total_avail FROM (SELECT sh.shoename, sh.sh_avail, sh.slcolor, sh.slminlen, sh.slminlen * un.un_fact AS slminlen_cm, sh.slmaxlen, sh.slmaxlen * un.un_fact AS slmaxlen_cm, sh.slunit FROM shoe_data sh, unit un WHERE sh.slunit = un.un_name) rsh, (SELECT s.sl_name, s.sl_avail, s.sl_color, s.sl_len, s.sl_unit, s.sl_len * u.un_fact AS sl_len_cm FROM shoelace_data s, unit u WHERE s.sl_unit = u.un_name) rsl WHERE rsl.sl_color = rsh.slcolor AND rsl.sl_len_cm >= rsh.slminlen_cm AND rsl.sl_len_cm <= rsh.slmaxlen_cm) shoe_ready WHERE shoe_ready.total_avail > 2;
���˥ץ��ʤϤ��Υĥ��2��٥���䤤��碌�ĥ�˽̤�ޤ��� ���ֲ���SELECT���ޥ�ɤ��̡��˽�������ɬ�פ�����ޤ���Τ�2���ܤ�SELECT��"����ĥ��夲"���ޤ��� ������2���ܤ�SELECT�Ͻ���ؿ�����Ĥ��ᡢĺ������϶��̤���ޤ��� �⤷���������ĥ��夲�Ƥ��ޤ��Ȱ��־��SELECT��ư����Ѥ��Ƥ��ޤ����Ȥˤʤꡢ����Ϥ���������ޤ��� ���������䤤��碌�ĥ��̤��Ȥ�����Ŭ�����������ƥ༫�Ȥǰռ�����ɬ�פϤ���ޤ���
����ޤǤΥӥ塼�롼��������Ǥ��䤤��碌�ĥ��2�Ĥξܺ٤ˤĤ��ƿ���ޤ���Ǥ����� �����ϡ����ޥ�ɥ����פȷ�̥�졼�����Ǥ��� �ºݡ����ޥ�ɥ����פϥӥ塼�롼��Ǥ�ɬ�פȤ���ޤ�����̥�졼����ӥ塼�ξ��ˤ����̤ʹ�θ��ɬ�פǤ��Τǡ���̥�졼�������䤤��碌��饤����ư��˱ƶ����뤫�⤷��ޤ���
SELECT��¾�Υ��ޥ�ɤ��Ф����䤤��碌�ĥ�δ֤ˤ��礭�ʰ㤤�Ϥ���ޤ��� ���������餫�˰㤦���ޥ�ɥ����פ���äƤ��ơ�SELECT�ʳ��Υ��ޥ�ɤǤϡ���̥�졼�����Ϸ�̤γ�Ǽ��Ȥʤ��ϰϥơ��֥�ι��ܤ�ؤ������ޤ��� ����ʳ��ǤϤޤä���Ʊ���Ǥ��� �Ǥ����顢a��b�������ĥơ��֥�t1��t2���Ф���ʲ���2�Ĥ�ʸ���䤤��碌�ĥ�ϡ��ۤȤ��Ʊ���Ǥ���
SELECT t2.b FROM t1, t2 WHERE t1.a = t2.a; UPDATE t1 SET b = t2.b FROM t2 WHERE t1.a = t2.a;
�ʲ��ˡ�����Ū�˼����ޤ���
�ϰϥơ��֥�ˤϡ��ơ��֥�t1��t2���Ф�����ܤ�����ޤ���
��Ū�ꥹ�Ȥˤϥơ��֥�t2���Ф����ϰϥơ��֥���ܤ�b���ؤ�����1�Ĥ��ѿ�������ޤ���
��P�ϡ��ϰϥơ��֥��ξ���ܤ�a�������������Ӥ��ޤ���
���ĥ��t1��t2��ñ��ʷ���ɽ���Ƥ��ޤ���
��̤Ȥ��ơ�ξ�����䤤��碌�ĥ�ϻ����褦�ʼ¹Էײ�ˤʤ�ޤ��� �����ϤȤ��2�ĤΥơ��֥�η��Ǥ��� UPDATE�Ǥ�t1����ȴ���Ƥ�����ϥץ��ʤˤ�ä���Ū�ꥹ�Ȥ��ɲä��졢�ǽ����䤤��碌�ĥ�ϡ��ʲ��Τ褦�ˤʤ�ޤ���
UPDATE t1 SET a = t1.a, b = t2.b FROM t2 WHERE t1.a = t2.a;
�����ơ�����¹Ԥ������������塼���ϡ�
SELECT t1.a, t2.b FROM t1, t2 WHERE t1.a = t2.a;
�η�̽���Ȥޤä���Ʊ����̽����������ޤ��� �Ȥϸ��äƤ�UPDATE�ˤϤ���äȤ������꤬����ޤ��� ����Ԥ����������塼���ηײ����ʬ�ϡ����η�̤����˸������Ƥ��뤫�˴�Ϳ���ޤ��� ���������塼����ñ�˷�̤Ȥʤ�Ԥν���������������Ǥ��� 1�Ĥ�SELECT���ޥ�ɤǤ⤦1�Ĥ�UPDATE���ޥ�ɤǤ���Ȥ������¤ϡ����������塼������Τ���̤ǰ����ޤ��� �����Ǥϡ����줬UPDATE�Ǥ���Ȥ狼�äƤ��ơ����η�̤��ơ��֥�t1������ʤ���Ф����ʤ����Ȥ��ΤäƤ��ޤ��� �������������ˤ���ɤιԤ��������Ԥˤ�ä��ִ�����ʤ���Фʤ�ʤ��ΤǤ��礦����
����������褹�뤿�ᡢUPDATEʸ��DELETEʸ�ξ���Ʊ�͡ˤ���Ū�ꥹ�Ȥ��̤ι��ܤ��դ��ä����ޤ��� ����ϡ����ߤΥ��ץ�ID��CTID�ˤǤ��� ����Ϥ��ιԤΥե�����֥��å��ֹ�ȥ֥��å���ΰ��֤���ĥ����ƥ���Ǥ��� �ơ��֥뤬�狼�äƤ����硢CTID����Ѥ��ơ�����t1�Ԥ���Ф��ƹ������뤳�Ȥ��Ǥ��ޤ��� CTID����Ū�ꥹ�Ȥ��ɲä���ȡ��䤤��碌�ϰʲ��Τ褦�ˤʤ�ޤ���
SELECT t1.a, t2.b, t1.ctid FROM t1, t2 WHERE t1.a = t2.a;
�Ǥϡ�PostgreSQL���̤ξܺ�����������ޤ��礦�� �ơ��֥�ιԤϾ����ޤ���Τǡ�ROLLBACK������®���ΤǤ��� UPDATE�Ǥϡ���CTID�����������˥ơ��֥�˿�������̹Ԥ��������졢CTID���ؤ������Ť��Ԥιԥإå����cmax��xmax���ܤϸ��ߤΥ��ޥ�ɥ����ȸ��ߤΥȥ�������ID�����ꤵ��ޤ��� ���Τ褦�ˤ��ơ��Ť��Ԥϱ����졢�ȥ��������ߥåȤ��줿�塢vacuum�ݽ�������ɬ�פˤʤä��ԤΤ����˺���Ǥ��ޤ���
�����ξܺ٤���������Ǥ���С��ɤ�ʥ��ޥ�ɤ��Ф��Ƥ�ޤä���Ʊ���褦�ˤ��ƥӥ塼�Υ롼����ñ��Ŭ�Ѥ��뤳�Ȥ��Ǥ��ޤ��� �����ˤϺ��ۤ�����ޤ���
�����ޤǤǡ��롼�륷���ƥब�ɤΤ褦�˥ӥ塼�ν�������䤤��碌�ĥ���Ȥ�����뤫����⤷�ޤ����� ��2����Ǥϡ�1�ĤΥӥ塼�����ñ���SELECT�ˤ�äơ��ǽ�Ū��4�ĤΥơ��֥���礹���䤤��碌�ĥ����������ޤ�����unit�ϰ�ä�̾����2��Ȥ��ޤ����ˡ�
�ӥ塼��롼�륷���ƥ�Ǽ������������ϡ��ɤΥơ��֥����٤����������Υơ��֥�֤δ�Ϣ�����ӥ塼���������������䤤��碌���˴ؤ����������ơ��ץ��ʤ�1�Ĥ��䤤��碌�ĥ����˻��äƤ��뤳�ȤǤ��� �����䤤��碌�����˥ӥ塼���Ф�����Ǥ������Ʊ�ͤǤ��� �ץ��ʤϤ����Ǥɤ줬�䤤��碌�����κ�Ŭ��ϩ������ꤷ�ʤ���Фʤ�ޤ��� �ץ��ʤ��ݻ��������¿�����¿���ۤɡ�����ɤ���������Ȥ��Ǥ��ޤ��� ������PostgreSQL�˼�������Ƥ���롼�륷���ƥ�Ϥ��줬�������ǡ�����Ƥ������Ƥξ���Ǥ��뤳�Ȥ��ݾڤ��ޤ���
�ӥ塼��INSERT��UPDATE��DELETE�ʤɤ���Ū��졼�����Ȥ���̾�դ���줿���Ϥɤ��ʤ�ΤǤ��礦���� ñ��˾�����������褦���ִ���ȡ���̥�졼��������䤤��碌���ϰϥơ��֥���ܤ�ؤ��䤤��碌�ĥ���Ǥ��ޤ���������ǤϻȤ��ޤ��� �������ꡢ��饤�������ӥ塼��INSTEAD OF�ȥꥬ�ˤ�äư�����Ȳ��ꤷ�ޤ��� �ʤ⤷���Τ褦�ʥȥꥬ���ʤ���С����������塼���ϥ��顼��ȯ�����ޤ����� ���ξ�硢�����Ͼ����㤦���ǹԤ��ޤ��� INSERT���Ф��Ƥϡ���饤���ϥӥ塼���������⤻�����䤤��碌�η�̥�졼�����Τޤޤˤ��ޤ��� UPDATE��DELETE���Ф��Ƥϡ����ޥ�ɤ������⤷���Ϻ�����褦�Ȥ���"�Ť�"�Ԥ��������뤿��˥ӥ塼�䤤��碌��Ÿ������ɬ�פ��ޤ�����ޤ��� ���Τ��ᡢ�ӥ塼���̾��̤�Ÿ������ޤ������⤦��Ĥ�Ÿ������ʤ��ϰϥơ��֥���ܤ���̥�졼�����Ȥ��ƥӥ塼��ɽ���䤤��碌���ɲä���ޤ���
�����ǵ���������ϥӥ塼�ǹ��������Ԥ�ɤΤ褦�����ꤹ�뤫�Ȥ������ȤǤ��� ��̥�졼����ơ��֥�ξ�硢��������Ԥ�ʪ��Ū�ʰ��֤����ꤹ�뤿������̤�CTID���ܤ���Ū�ꥹ�Ȥ��ɲä���뤳�Ȥ�פ��Ф��Ʋ������� �ӥ塼�ιԤˤϼºݤ�ʪ��Ū�ʰ��֤��ʤ����ᡢ�ӥ塼�ˤ�CTID������ޤ���Τǡ�����Ϸ�̥�졼����ӥ塼�ξ��ˤϾ�꤯�����ޤ��� �������ꡢUPDATE��DELETE���Ǥϡ����̤��������ι��ܤ���Ū�ꥹ�Ȥ��ɲä���Ƥ��ơ�����ϥӥ塼���餹�٤Ƥ����ޤ�褦��Ÿ������Ƥ��ޤ��� ���������塼�������ͤ�Ȥä�"�Ť�"�Ԥ�INSTEAD OF�ȥꥬ�����ޤ��� ����ιԤ��ͤ˴�Ť��ƹ��������Τ������Τϥȥꥬ����Ǥ�Ǥ���
�ӥ塼������INSTEAD OF�ȥꥬ���ʤ���С��ӥ塼�����ϤǤϼ�ưŪ�˹����Ǥ��ޤ���Τǥ��顼��ȯ�����ޤ��� ������Ѥ��뤿��ˡ��ӥ塼��INSERT��UPDATE��DELETE���ޥ�ɤ�ư����Ѥ���롼�������Ǥ��ޤ��� �����Υ롼��ϡ��ӥ塼�ǤϤʤ����ޥ�ɤ�����ޤ��� �̾��1�Ĥ⤷����ʣ���Υơ��֥�����륳�ޥ�ɤ˽����ޤ��� ���줬���������ˤʤ�ޤ���
�롼�뤬�ǽ��ɾ�����졢�����䤤��碌���ײ褵��¹Ԥ�������ˤ��������뤳�Ȥ����դ��Ʋ������� ���Τ���ӥ塼��INSTEAD OF�ȥꥬ��INSERT��UPDATE��DELETE�˴ؤ���롼�뤬���ä���硢�롼�뤬�ǽ��ɾ�����졢���η�̤�äƤϥȥꥬ�������Ȥ��ʤ����⤷��ޤ���