PostgreSQL 9.1.5ʸ�� | ||||
---|---|---|---|---|
前のページ | 巻戻し | 第 37章�롼�륷���ƥ� | 早送り | 次のページ |
PostgreSQL�Υ롼�륷���ƥ�ˤ���䤤��碌�ν����ˤ�äơ����ꥸ�ʥ���䤤��碌�ǻȤ�줿��ΤǤϤʤ�¾�Υơ��֥�/�ӥ塼��������������ޤ��� �����롼���Ȥ����Ȥˤ�äƥơ��֥�ؤν��ߥ�����������ޤ��뤳�Ȥ��Ǥ��ޤ���
�����롼����̡��ν�ͭ�ԤϤ��ޤ��� ��졼�����ʥơ��֥�ޤ��ϥӥ塼�ˤν�ͭ�Ԥϼ�ưŪ�ˤ����������줿�����롼��ν�ͭ�ԤȤʤ�ޤ��� PostgreSQL�Υ롼�륷���ƥ�ϥǥե���ȤΥ����������楷���ƥ�ο����ѹ����ޤ��� �롼��ˤ�äƻ��Ѥ�����졼�����ϡ��롼���ư�����桼���θ��¤ǤϤʤ����롼���ͭ�Ԥθ��¤ǥ����å�����ޤ��� ���Τ��Ȥϡ��桼�����䤤��碌����������ơ��֥�/�ӥ塼���Ф��Ƥθ��¤�������Ф褤���Ȥ��Ƥ��ޤ���
�㤨�С��ʲ��Τ褦�ˤ��ޤ��� ����桼�����������Ĥ��ϸĿ��ѤΡ�����¾�ϻ�̳���������Ѥ��뤿��Ρ������ֹ�Υꥹ�Ȥ���äƤ����Ȥ��ޤ��� �桼���ϼ��Τ褦�ˤ��ƹ��ۤ��뤳�Ȥ��Ǥ��ޤ���
CREATE TABLE phone_data (person text, phone text, private boolean); CREATE VIEW phone_number AS SELECT person, CASE WHEN NOT private THEN phone END AS phone FROM phone_data; GRANT SELECT ON phone_number TO secretary;
���Υ桼���ʤȥǡ����١����Υ����ѡ��桼���˰ʳ���phone_data�ơ��֥�˥��������Ǥ��ޤ��� ��������GRANT�ˤ������phone_number�ӥ塼���Ф�SELECT�Ǥ��ޤ��� �롼�륷���ƥ��phone_number�����SELECT����phone_data�����SELECT���˽����ޤ��� ���Υ桼����phone_number�ν�ͭ�ԡ��������äƥ롼��ν�ͭ�ԤǤ����顢phone_data���ɤ߹��ߤ��Ф��륢�������Ϥ��Υ桼���θ��¤˽��äƥ����å����졢�䤤��碌������դ��Ƥ�褤���Ȥˤʤ�ޤ��� phone_number�ؤΥ�������������å�����ޤ���������ϸƤӽФ����桼�����Ф��ƹԤ��ޤ��Τǡ����ȥ桼���ʳ��ϻȤ����Ȥ��Ǥ��ޤ���
���¤ϥ롼�뤴�Ȥ˥����å�����ޤ��� �Ǥ����������������ΤȤ��������������ֹ�Ȥ��뤳�Ȥ��Ǥ��ޤ��� �������������̤Υӥ塼��������������PUBLIC���Ф��륢���������Ĥ�Ϳ���뤳�Ȥ��Ǥ��ޤ��� ������������Υӥ塼���̤���ï�⤬phone_number�ǡ����뤳�Ȥ��Ǥ��ޤ��� ��Ǥ��ʤ����Ȥ�phone_data��ľ�ܥ�����������ӥ塼���뤳�ȤǤ� �ʼºݤˤϺ����ϤǤ��ޤ������������������ơ����¥����å��ǵ��䤵��ޤ��ˡ� �����ơ�����ȼ���phone_number�ӥ塼�������Ȥ˥桼�������դ��������ǡ����θ��¤���夲�뤳�Ȥ��Ǥ��ޤ��� ���Υӥ塼�ؤΥ���������¨�¤˼��Ԥ˽����ޤ���
���Υ롼�뤴�ȤΥ����å����������ƥ��ۡ���ˤʤ�ȹͤ���ͤ����뤫�⤷��ޤ����ºݤˤϤ����ǤϤ���ޤ��� �⤷���Τ褦�˵�ǽ���ʤ��Ȥʤ�ȡ�����phone_number��Ʊ�������ä��ơ��֥���Ѱդ��ơ�1��1��ǡ������˥��ԡ����뤫�⤷��ޤ��� �����ʤ�ȡ��ǡ�������Τ�ΤǤ����顢ï�˥�����������Ϳ���褦����μ�ͳ�Ǥ��� GRANT��"���ʤ����Ѥ��Ƥ��ޤ�"�Ȥ������ȤǤ��� ���Ѥ��Ƥ���ï�������Τ褦�ʤ��Ȥ�Ԥä����ϡ��ͤ����Ѥ���REVOKE���Ƥ���������
��˼������褦�ʼ�ˡ��ȤäƤ���������Ƥ��Τ˥ӥ塼�ϻȤ��ޤ����������ʤ��Ԥˤ���ǡ������ꤷ�Ʊ����ΤˤϻȤ��ʤ����Ȥ����դ��Ƥ��������� �㤨�С��ʲ��Υӥ塼�ϰ����ǤϤ���ޤ���
CREATE VIEW phone_number AS SELECT person, phone FROM phone_data WHERE phone NOT LIKE '412%';
�롼�륷���ƥबphone_number�����SELECT��phone_data�����SELECT�˽�����phone��412�ǻϤޤ�ʤ����ܤΤߤ�ɬ�פ��Ȥ��������ɲä��ޤ��Τǡ����Υӥ塼�ϰ����˸����ޤ���
���������桼�������Ȥδؿ�������Ǥ���ΤǤ���С�NOT LIKE
�������˥桼������δؿ���¹Ԥ���褦�ץ��ʤ��������뤳�Ȥ�������ޤ���
�㤨�аʲ����̤�Ǥ���
CREATE FUNCTION tricky(text, text) RETURNS bool AS $$ BEGIN RAISE NOTICE '% => %', $1, $2; RETURN true; END $$ LANGUAGE plpgsql COST 0.0000000000000000000001; SELECT * FROM phone_number WHERE tricky(person, phone);
�ץ��ʤϤ������NOT LIKE
�����˰²���tricky
�ؿ���¹Ԥ��뤳�Ȥ����Ӥޤ��Τǡ�phone_data�ơ��֥�οͤ������ֹ�Ϥ��٤�NOTICE�Ȥ���ɽ������ޤ���
���Ȥ��桼�����������ؿ�������Ǥ��ʤ����Ǥ⡢Ʊ�ͤι�����Ȥ߹��ߴؿ����Ȥ��ޤ���
���㤨�С��ۤȤ�ɤη��Ѵ��ؿ����������륨�顼��å������������ͤ˴ޤ�Ǥ��ޤ�����
Ʊ�ͤι�θ�Ϲ����롼��ˤ�Ŭ�ѤǤ��ޤ��� �������ˤ����ơ��ǡ����١����Υơ��֥�ν�ͭ�Ԥ�shoelace�ӥ塼���Ф���ï����SELECT��INSERT��UPDATE��DELETE���¤�Ϳ���뤳�Ȥ��Ǥ��ޤ��� ��������shoelace_log���Ф��Ƥ�SELECT�����Ǥ��� �������ܤ����롼�륢�������ϻپ�ʤ��¹Ԥ��졢�ޤ���¾�Υ桼���ϥ������ܤ뤳�Ȥ��Ǥ��ޤ��� ��������¾�Υ桼���Ϲ��ܤ���¤�����ꡢ����¸�ߤ�����ܤ����롢���뤤�Ϻ�����뤳�ȤϤǤ��ޤ��� ���ξ�硢shoelace_log�Ȥ��Ƥ���롼��Ͼ��Τʤ�INSERT�����Ǥ��Τǡ����ν�����Ѥ���褦�˥ץ��ʤ��������뤳�Ȥǥ롼����˲������ǽ���Ϥ���ޤ��� ����Ϥ��ʣ���ʾ����Ǥ��������ʤ����⤷��ޤ���