SQL - トランザクションの処理 (COMMIT / ROLLBACK)


■内容

Top

■トランザクション

Top

■COMMIT 文の基本

Top
■例題
Top

■ROLLBACK 文の基本

Top
■例題
  1. つぎの操作を一連のトランザクションとして実行し、最後にロールバックしてください。
    1. トランザクションの開始を宣言します。
    2. 顧客表(customer)のすべての行を削除します。(DELETE文を使います。)
    3. 担当者表(employee)のすべての担当者の給与(sal)を1.2倍します。
    4. ロールバックします。
    => BEGIN;
    BEGIN
    
    => DELETE FROM customer;
    DELETE 20
    
    => SELECT * FROM customer ORDER BY cust_id;
     cust_id | cust_name | address | tel | fax
    ---------+-----------+---------+-----+-----
    (0 rows)
    
    => UPDATE employee SET sal = sal + 1000;
    UPDATE 2
    
    => SELECT * FROM employee ORDER BY emp_id;
     emp_id | dept_id |  emp_name  | birthday |  hiredate  | sex |   sal
    --------+---------+------------+----------+------------+-----+---------
        100 |      20 | 丸野 和夫 |          | 2004-04-04 |   1 | 3000.00
        110 |      30 | 山田 真弓 |          | 2004-04-04 |   2 | 3200.00
    (2 rows)
    
    => ROLLBACK;
    ROLLBACK
    
    => SELECT * FROM customer ORDER BY cust_id;
     cust_id |  cust_name  |       address        |      tel      |      fax
    ---------+-------------+----------------------+---------------+---------------
           1 | 阪上 徹     | 和歌山県和歌山市     | 073-123-XXXX  | 073-123-XXXX
           2 | 松坂 宏     | 東京都千代田区       | 03-3158-XXXX  | 03-3258-XXXX
           3 | 北島 浩二   | 大阪府大阪市北区     | 06-1234-XXXX  | 06-1234-XXXX
           4 | 永井 光夫   | 東京都渋谷区         | 03-3124-XXXX  | 03-0124-XXXX
           5 | 関根 修一   | 大阪府泉佐野市       | 0724-99-XXXX  | 0724-99-XXXX
           6 | 木田 直美   | 東京都中央区         | 03-3333-XXXX  |
           7 | 片桐 昇     | 東京都新宿区         | 03-1111-XXXX  | 03-1111-XXXX
           8 | 田中 正敏   | 東京都品川区         | 03-2222-XXXX  | 03-2222-XXXX
           9 | 西口 和夫   | 東京都目黒区下目黒   | 03-3333-XXXX  | 03-3333-XXXX
          10 | 山口 克巳   | 東京都大田区         | 03-4444-XXXX  | 03-4444-XXXX
          11 | 加藤 昭夫   | 神奈川県川崎市       | 044-505-XXXX  | 044-505-XXXX
          12 | 石橋 健太郎 | 札幌市中央区         | 011-555-XXXX  |
          13 | 米田 恵美子 | 東京都港区虎ノ門     | 03-3987-XXXX  | 03-3987-XXXX
          14 | 松田 純一   | 東京都千代田区大手町 | 03-3975-XXXX  | 03-3975-XXXX
          15 | 松下 晴彦   | 東京都板橋区         | 03-3123-XXXX  | 03-3123-XXXX
          16 | 安井 和義   | 愛知県東海市         | 0560-448-XXXX | 0560-448-XXXX
          17 | 高沢 千夏   | 大阪府大阪市大淀区   | 06-6777-XXXX  | 06-6777-XXXX
          18 | 島田 良子   | 東京都渋谷区         | 03-3698-XXXX  |
          19 | 吉田 正也   | 神奈川県川崎市       | 044-888-XXXX  | 044-888-XXXX
          20 | 藤田 幹夫   | 東京都中央区         | 03-3578-XXXX  |
    (20 rows)
    
    => SELECT * FROM employee ORDER BY emp_id;
     emp_id | dept_id |  emp_name  | birthday |  hiredate  | sex |   sal
    --------+---------+------------+----------+------------+-----+---------
        100 |      20 | 丸野 和夫 |          | 2004-04-04 |   1 | 2000.00
        110 |      30 | 山田 真弓 |          | 2004-04-04 |   2 | 2200.00
    (2 rows)
    
Top

■構文

Top

inserted by FC2 system