PostgreSQL 9.1.5ʸ�� | ||||
---|---|---|---|---|
前のページ | 巻戻し | 第 3章���٤ʽ���ǽ | 早送り | 次のページ |
�ȥ������������ƤΥǡ����١��������ƥ�Ǵ��äȤʤ복ǰ�Ǥ����ȥ�������δ���Ū������ʣ���μ���ñ��Ρ����Ƥ��ʤ����פ����ˤޤȤ�夲�뤳�ȤǤ������οʹ�����ξ��֤�¾��ư���Ƥ���ȥ�������ϸ����ޤ��� �����ơ����餫�Υ��顼��������ȥȥ�������ϴ��뤷�ޤ��Ǥ�����ǡ����١����ϥ��顼�θ����Ȥʤä����ˤ�äƤޤä����ƶ�����뤳�ȤϤ���ޤ���
���ޤ��礦�������ԤΥǡ����١����Ǥ�����¿���θܵҤθ��¤λĹ�Ȼ�Ź�����¶�Ĺ⤬��Ͽ����Ƥ���Ȥ��ޤ��� ���ꥹ�θ��¤���ܥ֤θ��¤�$100.00�����⤬���ä����Ȥ�Ͽ�������Ȥ��ޤ��� ����ä���˽��ñ�㲽����ȡ�����SQL�ϼ��Τ褦�ˤʤ�ޤ���
UPDATE accounts SET balance = balance - 100.00 WHERE name = 'Alice'; UPDATE branches SET balance = balance - 100.00 WHERE name = (SELECT branch_name FROM accounts WHERE name = 'Alice'); UPDATE accounts SET balance = balance + 100.00 WHERE name = 'Bob'; UPDATE branches SET balance = balance + 100.00 WHERE name = (SELECT branch_name FROM accounts WHERE name = 'Bob');
��Ƥ���SQL���ޥ�ɤξܤ������ȤˤĤ��ơ������ǤϽ��פǤ���ޤ����פ����ϡ�����ñ���������Ū��̤������ᡢʣ������Ω����������³�����ؤ�äƤ��뤳�ȤǤ�����Կ����Ȥ��ƤϤ�������Ƥι������Ԥ��뤫�⤷���Ϥޤä����Ԥ��ʤ��Τ������줫�γξڤ�ɬ�פǤ���$100.00�����ꥹ�θ��¤��������Ȥ��줺�˥ܥ֤θ��¤˿�����ޤ��褦�ʥ����ƥ�����������äƤϤʤ�ޤ�������$100.00���ܥ֤˿�����ޤ�ʤ��ǥ��ꥹ�θ��¤��������Ȥ��줿�Ȥ����顢���ꥹ�Ϥ��ζ�ԤΤ������ͤǤϤʤ��ʤ�Ǥ��礦�͡���������ǰ������Թ礬ȯ��������硢��̤˱ƶ���Ϳ���뤤���ʤ��³����¹Ԥ���ʤ��Ȥ����ξڤ�ɬ�פǤ���������³�����ȥ��������˥��롼�ײ�����ȡ����γξڤ������ޤ��� ����ȥ��������¾�Υȥ������鸫�ƴ��뤹�뤫�ޤä���������ʤ��ä����Ȥ���������������Ū�ȸƤФ�ޤ���
�⤦�����ǡ����ä���ȥ��������뤷�ǡ����١��������ƥ�˾�ǧ���줿���ϡ��μ¤˹���Ū����¸���졢���Ȥ�ľ��˥���å��夬�����ä��Ȥ��ƤϿ�ϼ����ʤ��Ȥ����ξڤ�ɬ�פǤ��� �㤨�Хܥ֤���ʬ�θ��¤��鸽��������Ȥ���Ź�ޤ���Ω����ä�ľ��˥ܥ֤θ��¤���ΰ�����Ȥ���Ͽ�������ƥ�Υ���å���Ǿä��Ƥ��ޤ����Ȥϼ���������ޤ��� �ȥ�������������Ƥ���ǡ����١����Ǥϡ�����ȥ�������ˤ�����Ƥι��������Υȥ�������뤷�������Τ�Ԥ����˱�³Ū��Ͽ���֡ʤ��ʤ���ǥ�������ˤ˥�������ळ�Ȥ��ݾڤ��Ƥ��ޤ���
¾�ˤ�ȥ�����������Υǡ����١����ν��פ������ϡ�����Ū�����Ȥ�����ǰ�˿����ط����Ƥ��ޤ� ��ʣ���Υȥ�������Ʊ����ư��Ƥ���������줾��Υȥ���������̤Υȥ������ԤäƤ���̤��λ���ѹ��뤳�Ȥ��Ǥ��ƤϤʤ�ޤ��� �㤨�С�����ȥ��������٤Ƥλ�Ź�λĹ�פ����Ȥ�Ԥʤ���硢���ꥹ�θ��¤������Ź����ΰ�����Ȥ����������ޤ����ܥ֤θ��¤������Ź�ؤο�����ߤ�������ޤ��⤷����ξ���Ȥ�������ޤ��� �Ĥޤꡢ�ǡ����١�����Ǥι���Ū���̤Ȥ�����̣�Τߤʤ餺����Ϣ�����β����DzĻ����Ȥ������Ȥˤ����Ƥ�ȥ�������ϡ֤��٤ơפ��֤ʤ��פ��Ǥʤ���Фʤ�ޤ��� �����Υȥ�������ˤ�빹���ϡ�¾�Υȥ�������ϥȥ��������뤹��ޤ��ԲĻ�Ǥ��� ���Υȥ��������뤷�����λ����ǡ��ȥ������Ԥä����������Ƥ�������褦�ˤʤ�ޤ���
PostgreSQL�Ǥϥȥ��������������SQL���ޥ�ɤ�BEGIN��COMMIT�ǰϤ�����ꤷ�ޤ�����������ȡ����ζ�Լ������Υȥ�������μºݤϼ��Τ褦�ˤʤ�ޤ���
BEGIN; UPDATE accounts SET balance = balance - 100.00 WHERE name = 'Alice'; -- etc etc COMMIT;
�ȥ����������������ǥ��ߥåȤ�Ԥ�ʤ��ʥ��ꥹ�θ��»Ĺ⤬��ʤ��ä��褦�ʾ��ˤ�Ƚ�Ǥ������ϡ�COMMIT�ǤϤʤ�ROLLBACK����Ѥ��ƹԤä����Ƥι������˴����ޤ���
PostgreSQL�ϼº����Ƥ�SQLʸ��ȥ���������Ǽ¹Ԥ���褦�ˤʤäƤ��ޤ���BEGIN��ȯ�Ԥ��ʤ��Ǥ⡢���줾���ʸ�ϰ���Ū��BEGIN���դ��Ƥ���Ȥߤʤ�������������С�COMMIT�ǰϤޤ�Ƥ����ΤȤ��ޤ���BEGIN��COMMIT�ǰϤޤ줿ʸ�Υ��롼�פ��ȥ�������֥��å��ȸƤФ�뤳�Ȥ⤢��ޤ���
注意: �����Ĥ��Υ��饤����ȥ饤�֥��ϼ�ưŪ��BEGIN��COMMIT���ޥ�ɤ�ȯ�Ԥ����ٹ�ʤ��˥ȥ�������֥��å���ͭ���ˤʤ�ޤ������Ѥ��Ƥ��륤�ե������Υɥ�����Ȥdz�ǧ���Ƥ���������
�����֥ݥ��������Ѥ��뤳�Ȥǡ��ȥ����������ʸ���γ�٤�٤������椹�뤳�Ȥ���ǽ�ˤʤ�ޤ��������֥ݥ���Ȥϡ��ȥ�������������뤢����ʬ������Ū���˴�����������˴�����ʤ��Ĥ����ʬ�ߥåȤ��ޤ���SAVEPOINT���ޥ�ɤǥ����֥ݥ���Ȥ���������塢ɬ�פǤ����ROLLBACK TO���ޥ�ɤˤ�ꥻ���֥ݥ���Ȥޤǥ�����Хå��Ǥ��ޤ��� ������줿�����֥ݥ���Ȥȥ�����Хå�����ݥ���ȤȤδ֤����ƤΥȥ�������Υǡ����١������ѹ����˴�����ޤ����������֥ݥ���Ȱ������ѹ����ݻ�����ޤ���
�����֥ݥ���Ȥޤǥ�����Хå�������Ǥ⥻���֥ݥ���Ȥ�������줿�ޤޤǤ������Τ��Ჿ�٤Ǥ⤽���˥�����Хå��Ǥ��ޤ��� �դ˺�������Υ����֥ݥ���Ȥ˥�����Хå�����ɬ�פ��ʤ��ΤǤ���С���������������ƥ�������¿���Ȥ�������뤳�Ȥ��Ǥ��ޤ��� ���륻���֥ݥ���Ȥ��������ꥻ���֥ݥ���Ȥ˥�����Хå����뤳�Ȥˤ�ꡢ��ưŪ�ˤ��θ��������줿���٤ƤΥ����֥ݥ���Ȥ��������뤳�Ȥ����դ��Ƥ���������
��������Ƥϥȥ�������֥��å���ǵ�����Τǡ�¾�Υǡ����١������å����ϲ��⸫���ޤ��ȥ�������֥��å��ߥåȤ�����硢¾�Υ��å����ϥ��ߥåȤ��줿�٤�1�Ĥ�ñ�̤Ȥ��Ƹ�����褦�ˤʤ�ޤ�����������Хå��ι٤Ϸ褷�ƲĻ�ˤʤ�ޤ���
��ԤΥǡ����١�����פ��Ф��Ƥ������������ꥹ�θ��¤���$100.00������Ф��ƥܥ֤θ��¤˿������Ȥ��ޤ�����ˤʤäƥܥ֤ǤϤʤ�������θ��¤˿������٤����ä��ȵ����դ��ޤ��������ξ�祻���֥ݥ���ȤΤ褦�˻Ȥ��ޤ���
BEGIN; UPDATE accounts SET balance = balance - 100.00 WHERE name = 'Alice'; SAVEPOINT my_savepoint; UPDATE accounts SET balance = balance + 100.00 WHERE name = 'Bob'; -- ���äȡ�˺���Ȥ������ä���������θ��¤�Ȥ�ʤ���С� ROLLBACK TO my_savepoint; UPDATE accounts SET balance = balance + 100.00 WHERE name = 'Wally'; COMMIT;
������Ϥ�������ü��ñ�㲽���Ƥ��ޤ����������֥ݥ���Ȥλ��Ѥ��̤��ƥȥ�������֥��å����¿���β�ǽ������Ԥ��뤳�Ȥ��狼��ޤ��� ����ˤϲ��餫�Υ��顼�ǥ����ƥब�ȥ�������֥��å������Ǥ�����硢�����˥�����Хå����ƺƤӳ��Ϥ���Τ�����ơ�ROLLBACK TO���ޥ�ɤ��ȥ�������֥��å�����������᤹ͣ��μ��ʤǤ���