¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

CREATE RULE

Name

CREATE RULE  --  �������񤭴����롼������

Synopsis

CREATE RULE name AS ON event
    TO object [ WHERE condition ]
    DO [ INSTEAD ] action

������ action �ϰʲ��ΤȤ���Ǥ���

NOTHING
|
query
|
( query ; query ... )
|
[ query ; query ... ]

����

name

��������롼���̾���Ǥ���

event

���٥�ȤȤϡ�SELECT��UPDATE�� DELETE��INSERT�Τ����줫�Ǥ���

object

���֥������ȤȤϡ�table �ޤ���table.column �Τ����줫�Ǥ��ʸ������Ǥ� table�Τߤ��ºݤ˼�������Ƥ��ޤ��ˡ�

condition

Ǥ�դΥ֡���������˾�P�Ǥ�����P��new�� old�ʳ��ΤɤΥơ��֥�򻲾Ȥ��뤳�Ȥ�Ǥ��ޤ���

query

action��������ñ���ޤ���ʣ�����䤤��碌�ϡ�Ǥ�դ�SQL SELECT�� INSERT��UPDATE�� DELETE��NOTIFYʸ�Τɤ�Ǥ⹽���ޤ���

condition�� action�������Ǥϡ����̤ʥơ��֥�̾new��old�ϻ��Ȥ����ơ��֥��object�ˤ��ͤ򻲾Ȥ��뤿��˻Ȥ����Ȥ��Ǥ��ޤ��� new��ON INSERT��ON UPDATE�롼����������ޤ��Ϲ�������Ƥ��뿷�����Ԥλ��Ȥ�ͭ���Ǥ��� old�� ON UPDATE��ON DELETE�롼�뤬�������������Ƥ����¸�ιԤ򻲾Ȥ���Τ�ͭ���Ǥ���

����

CREATE

�롼��κ���������������֤�����å������Ǥ���

����

PostgreSQL���롼�륷���ƥ� �ˤ�äơ��ǡ����١����ơ��֥����������������������ؤȤ��ƹԤ��륢��������������뤳�Ȥ��Ǥ��ޤ����롼��ϥơ��֥�ӥ塼��������뤿��ˤ�Ȥ��ޤ���

�롼��θ���ϸ��̤Υ��󥹥��󥹡ʹԡˤ������������졢���������������������硢�Ť����󥹥��󥹡����򡢹�����������оݡˤȡ����������󥹥��󥹤��ʹ������ɲä��оݡ�¸�ߤ���Ȥ������ȤǤ���Ϳ����줿���٥�ȷ�����Ū�Υ��֥������ȡʥơ��֥�ˤΤ��٤ƤΥ롼��ϡ����ꤵ��ʤ����֤ǿ�������ޤ���WHERE���¸�ߤ�����ˤǻ��ꤵ�줿condition�����Ǥ����硢���Υ롼��� action��ʬ���¹Ԥ���ޤ���INSTEAD�����ꤵ���ȡ������䤤��碌������� action���Ԥ��ޤ��������Ǥʤ���硢 ON INSERT �ξ��ϸ����䤤��碌�θ�ˡ�ON UPDATE �� ON DELETE �ξ��ϸ����䤤��碌�����˹Ԥʤ��ޤ��� condition�� action��ξ���Τʤ��ǡ��Ť����󥹥��󥹤��뤤�Ͽ��������󥹥��󥹤���Υե�����ɤ��ͤ� old.attribute-name �� new.attribute-name ����������ޤ���

�롼���action��ʬ�ϡ�1�İʾ���䤤��碌����Ĥ��Ȥ��Ǥ��ޤ���ʣ�����䤤��碌��񤯤���ˤϡ����ä��ޤ����礫�ä���[]�ˤǰϤߤޤ������Τ褦���䤤��碌�ϻ��ꤵ�줿���֤Ǽ¹Ԥ���ޤ��ʰ��������֥������Ȥ�ʣ���롼��μ¹Խ��֤ˤϲ����ݾ㤬����ޤ���ˡ� action��ư�����ʤ����Ȥ򼨤������NOTHING��Ȥ����Ȥ�Ǥ��ޤ����������äơ�DO INSTEAD NOTHING�롼���(���ξ�郎���ξ��)�����䤤��碌�μ¹Ԥ��������ޤ���DO NOTHING �롼��Ϥʤˤ⤷�ޤ���

�롼���action��ʬ��ư���¥�����桼�����ޥ�ɤ�Ʊ�����ޥ�ɤȥȥ�󥶥�������̻ҤǼ¹Ԥ��ޤ���

�롼��ȥӥ塼

�������Ǥϡ�ON SELECT�롼���̵����INSTEAD�롼��Ǥʤ���Фʤ餺��ñ��SELECT�䤤��碌������Ω�ĥ�����������äƤ��ʤ���Фʤ�ޤ��󡣤��Τ褦�ˤ��ơ�ON SELECT�롼��ϥ��֥������ȥơ��֥�����Ū�˥ӥ塼���Ѥ������Υӥ塼�βĻ�Ū�����Ƥϡʤ⤷���ä��Ȥ��Ƥ�˥ơ��֥���˳�Ǽ����Ƥ����ΤǤϤʤ����롼���SELECT�䤤��碌�ˤ�ä��֤��줿�ԤǤ����ºݤΥơ��֥������������ON SELECT�롼�������������CREATE VIEW���ޥ�ɤ�������褤�����Ȥ���Ƥ��ޤ���

CREATE VIEW ��(�ظ�γ�Ǽ�ΰ褬���פ�)���ߡ��Υơ��֥�������������� ON SELECT �롼����Ϣ�Ť��ޤ��������ƥ�ϡ��ºݤΥơ��֥뤬�ɤ��ˤ���Τ���Ƚ�ǤǤ��ʤ����ᡢ�ӥ塼���Ф��빹������Ĥ��ޤ���ON INSERT��ON UPDATE��ON DELETE �롼��(�⤷���ϡ���Ū�˱����Ƥ��Τ����ΰ���)��������ơ��ӥ塼�ؤι�������¾�Υơ��֥�ؤ�Ŭ�ڤʹ��������ִ����뤳�Ȥǡ�������ǽ�ʥӥ塼�Ȥ�������������뤳�Ȥ��Ǥ��ޤ���

�ӥ塼�ι����κݤ˾���դ��롼��λ��Ѥ�ͽ�ꤷ�Ƥ����硢��ʤ�����ޤ������Υӥ塼�˵��Ĥ��������줾���̵��� INSTEAD �롼����Ѱդ��� ɬ�������뤳�ȤǤ����롼�뤬����դ����ޤ��ϡ�INSTEAD �ǤϤʤ���硢�����ƥ�Ϲ������λ�Ԥ���䤷�ޤ������ξ����ߡ��ơ��֥�ؤ�����Ԥʤ����Ȥˤʤ�ȥ����ƥब�ߤʤ�����Ǥ�������դ��롼��������Ƥλ��Ѥ����륱�����򰷤��ΤǤ���С�̵���� DO INSTEAD NOTHING �롼����ɲä��������ƥ�˥��ߡ��ơ��֥�ؤι�����Ԥʤ����Ȥ��褷�Ƥʤ����Ȥ����򤵤��뤳�Ȥǡ������¸����뤳�Ȥ��Ǥ��ޤ�������ˡ�INSTEAD �Ǥʤ�����դ��롼���������ޤ�������餬��ư�����Ȥ����Ǥϡ��ǥե���Ȥ�INSTEAD NOTHING ư����ɲä���ޤ���

����

�ơ��֥�˥롼���������뤿��ˤϡ��롼�������������������äƤ��ʤ���Фʤ�ޤ��󡣸��¤��Ѥ���ˤ�GRANT�� REVOKE��Ȥ��ޤ���

�۴ĥ롼����򤱤뤿������դ�ʧ�����ȤϤȤƤ���פǤ������Ȥ��С�������2�ĤΥ롼�뤽�줾�줬 PostgreSQL�˼��������줿��硢SELECT���ޥ�ɤϡ��䤤��碌�����٤�۴Ĥ������������ PostgreSQL�˥��顼��ɽ�������ޤ���

CREATE RULE "_RETemp" AS
    ON SELECT TO emp
    DO INSTEAD 
	SELECT * FROM toyemp;

CREATE RULE "_RETtoyemp" AS
    ON SELECT TO toyemp
    DO INSTEAD 
	SELECT * FROM emp;

�ʲ���EMP�������򤷤褦�Ȥ�����ߤϡ��䤤��碌�����٤�۴Ĥ������뤿���PostgreSQL�˥��顼��ȯ�Ԥ����ޤ���

SELECT * FROM emp;

���ߡ��롼�뤬 NOTIFY �䤤��碌��ޤ��硢NOTIFY ��̵���˼¹Ԥ���ޤ����Ĥޤꡢ�롼���Ŭ�Ѥ��٤��Ԥ�¸�ߤ��ʤ��ä��Ȥ��Ƥ⡢NOTIFY ��ȯ�Ԥ���ޤ����㤨�С�

CREATE RULE notify_me AS ON UPDATE TO mytable DO NOTIFY mytable;

UPDATE mytable SET name = 'foo' WHERE id = 42;

�Ǥϡ�id=42 �ιԤ�¸�ߤ��Ƥ⡢¸�ߤ��ʤ��Ƥ� UPDATE ���ˤ��NOTIFY ���٥�Ȥ���������ޤ�������ϼ���������¤Ǥ��ꡢ�������������ǽ��������ޤ���

�ߴ���

SQL92

CREATE RULEʸ��PostgreSQL�����ĥ�Ǥ���SQL92�ˤ�CREATE RULE�Ϥ���ޤ���