CREATE RULE

Name

CREATE RULE -- ����һ���µ���д����

Synopsis

CREATE [ OR REPLACE ] RULE name AS ON event
    TO table [ WHERE condition ]
    DO [ ALSO | INSTEAD ] { NOTHING | command | ( command ; command ... ) }

����

CREATE RULE ����һ���������ض��������ͼ���¹��� CREATE OR REPLACE RULE Ҫô�Ǵ���һ���¹��� Ҫô����һ��ͬ���ϵ�ͬ�������滻���й���

PostgreSQL����ϵͳ���������ڴ����ݿ����и��£� �����ɾ������ʱ����һ�������Ķ�����ִ�С� ��˵��������ǵ�������ָ���ı���ִ��ָ���Ķ�����ʱ�򣬵���һЩ����Ķ�����ִ�С� ���⣬һ�� INSTEAD �������������һ������ȡ��ij���ض������������������ȫ����ִ�С� ��������ʵ�ֱ���ͼ������Ҫ���׵��ǹ���ʵ����ֻ��һ������ת�����ƣ�����˵����ꡣ ����ת�����������ʼִ��֮ǰ�������ʵ������Ҫһ��Ϊÿ�������ж��������IJ����� ��ô����ܻ���Ҫ��һ���������������ǹ����йع���ĸ�����Ϣ������ Chapter 33 �ҵ���

Ŀǰ��ON SELECT ����������������� INSTEAD �����ұ�����һ����һ�� SELECT ��ѯ��ɵĶ����� ��ˣ�һ�� ON SELECT ������Ч�ذѶ����ת����ͼ�� ���Ŀɼ������ǹ���� SELECT ��ѯ���صļ�¼�����Ǵ洢�ڱ��е����ݣ�����еĻ����� ������Ϊдһ�� CREATE VIEW ����ȴ���һ����Ȼ����һ�� ON SELECT ����������ķ��Ҫ�á�

����Դ���һ�����Ը��µ���ͼ�Ļþ��� ����������ͼ�϶��� ON INSERT��ON UPDATE���� ON DELETE ���򣨻�����������Ҫ���κ�����������Ӽ������ú��ʵĶ�������ĸ����滻����ͼ�ϸ��µĶ�����

�����������ͼ������ʹ������������ô�������һ�����䣺 ����ϣ������ͼ�������ÿ���������㶼������һ���������� INSTEAD ���� ����������������ģ����������� INSTEAD�� ��ôϵͳ�Խ��ܾ�ִ�и��¶�������ͼ����Ϊ����Ϊ�����ջ���ij�̶ֳ������������ִ�ж����� ������봦�����������ϵ��������õ��������ֻ��Ҫ����һ���������� DO INSTEAD NOTHING ����ȷ��ϵͳ�������������ᱻ���������������Ϳ����ˡ� Ȼ��������������ɷ� INSTEAD�� ����������£�������DZ���������ô���Ǿ����ӵ�ȱʡ�� INSTEAD NOTHING �����С�

����

name

�����Ĺ���������������ͬһ�����ϵ����й����������Ψһ�� ͬһ�����ϵ�ͬһ���¼����͵Ĺ����ǰ�����ĸ˳�����еġ�

event

�¼��� SELECT�� UPDATE��DELETE �� INSERT ֮һ��

table

����ʩ�õı������ͼ�����֣�������ģʽ���Σ���

condition

���� SQL �������ʽ������ boolean���� �������ʽ�������� NEW �� OLD ֮�ⲻ�������κα����Ҳ����оۼ�������

INSTEAD

INSTEAD ָʾ�������������������ִ�С�

ALSO

ALSO ֻ�Ǹ�����Ӧ�ú����������һ��ִ�С�

�����û������ ALSO Ҳû������ INSTEAD�� ��ô ALSO ��ȱʡ��

command

��ɹ������������Ч�������� SELECT��INSERT�� UPDATE��DELETE���� NOTIFY ���֮һ��

�� condition �� command � ��������� NEW �� OLD ��������ָ�����ñ������ֵ new �� ON INSERT �� ON UPDATE ���������ָ�򱻲������µ����С� OLD �� ON UPDATE���� ON DELETE ���������ָ���ִ�ı����£�����ɾ�����С�

ע��

Ϊ���ڱ��϶������������� RULE Ȩ�ޡ�

��һ������Ҫ��������Ҫ����ѭ������ ���磬�����������������嶼�� PostgreSQL ���Խ��ܵģ� ��һ�� SELECT ����ᵼ�� PostgreSQL ����һ��������Ϣ����Ϊ�ò�ѯѭ����̫��Σ�

CREATE RULE "_RETURN" AS
    ON SELECT TO t1
    DO INSTEAD
        SELECT * FROM t2;

CREATE RULE "_RETURN" AS
    ON SELECT TO t2
    DO INSTEAD
        SELECT * FROM t1;

SELECT * FROM t1;

Ŀǰ�����һ���������һ�� NOTIFY ��ѯ����ô�� NOTIFY ����������ִ�� --- Ҳ����˵���������ʩ�ӵ��κ�����ͷ�� �� NOTIFY Ҳ�ᱻ���������磬��

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

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

�һ�� NOTIFY �¼����� UPDATE ��ʱ�򷢳��������Ƿ����������� id = 42 ���С�����һ��ʵ�ֵ����ƣ������İ汾Ӧ���޲����ë����

������

CREATE RULE PostgreSQL ���Ե���չ������������дϵͳҲ����ˡ�