PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Fast Forward | Next |
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 �����С�
�����Ĺ���������������ͬһ�����ϵ����й����������Ψһ�� ͬһ�����ϵ�ͬһ���¼����͵Ĺ����ǰ�����ĸ˳�����еġ�
�¼��� SELECT�� UPDATE��DELETE �� INSERT ֮һ��
����ʩ�õı������ͼ�����֣�������ģʽ���Σ���
���� SQL �������ʽ������ boolean���� �������ʽ�������� NEW �� OLD ֮�ⲻ�������κα����Ҳ����оۼ�������
INSTEAD ָʾ�������������������ִ�С�
ALSO ֻ�Ǹ�����Ӧ�ú����������һ��ִ�С�
�����û������ ALSO Ҳû������ INSTEAD�� ��ô ALSO ��ȱʡ��
��ɹ������������Ч�������� 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 ���С�����һ��ʵ�ֵ����ƣ������İ汾Ӧ�������ë����