¾�ΥС�������ʸ�� �� 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

3.4. �ȥ�󥶥������

�ȥ�󥶥�����������ƤΥǡ����١��������ƥ�Ǵ��äȤʤ복ǰ�Ǥ����ȥ�󥶥������δ���Ū������ʣ���μ���ñ��Ρ����Ƥ��ʤ����פ����ˤޤȤ�夲�뤳�ȤǤ������οʹ�����ξ��֤�¾��ư���Ƥ���ȥ�󥶥�����󤫤�ϸ����ޤ��� �����ơ����餫�Υ��顼��������ȥȥ�󥶥������ϴ��뤷�ޤ��󡣤Ǥ�����ǡ����١����ϥ��顼�θ����Ȥʤä����ˤ�äƤޤä����ƶ�����뤳�ȤϤ���ޤ���

���󤲤ޤ��礦�������ԤΥǡ����١����Ǥ�����¿���θܵҤθ��¤λĹ�Ȼ�Ź�����¶�Ĺ⤬��Ͽ����Ƥ���Ȥ��ޤ��� ���ꥹ�θ��¤���ܥ֤θ��¤�$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���ޥ�ɤ��ȥ�󥶥������֥��å�����������᤹ͣ��μ��ʤǤ���