InterBase クイック スタート:Part V - ジェネレータを作成する

提供: InterBase

InterBase クイック スタート:Part V - 応用トピック へ戻る


Image 025.jpg ジェネレータを作成および設定する

  1. Employee テーブルにおける社員番号をチェックして、現在の社員番号の最高値を確認することができます:
    SELECT emp_no
    FROM   employee
    ORDER  BY emp_no
    

    上の文では、145 が最高値であることを確認できるよう、すべての社員番号を返します。 次の文を使用すると、同じ結果をより少ない作業で取得することができます:

    SELECT MAX(emp_no)
    FROM   employee
    
  2. 次の文を実行して、emp_no_gen というジェネレータを作成します。
    CREATE generator emp_no_gen
    
  3. ジェネレータを適切に使用するには、現在使用されている最高値(145)で初期化する必要があります:
    SET generator emp_no_gen TO 145
    

Image 025.jpg 値を生成するトリガを作成する

  1. このセクションでは、emp_no_gen ジェネレータを使用するトリガ set_emp_no を定義し、 一意の連続した社員番号を生成し、それらを Employee テーブルに挿入します。
    CREATE TRIGGER set_emp_no FOR employee
    BEFORE INSERT AS 
    BEGIN
        NEW.emp_no = gen_id
           (
                  emp_no_gen,
                  1
           );
    END
    

    上の文では、set_emp_no トリガは挿入オペレーションの前に実行され、emp_no_gen ジェネレータ上で gen_id() 関数を呼び出して、emp_no の新しい値をインクリメント 1 で作成します。

  2. このジェネレータをテストするには、次の文を実行します:
    INSERT INTO employee
                (first_name,
                 last_name,
                 dept_no,
                 job_code,
                 job_grade,
                 job_country,
                 hire_date,
                 salary,
                 phone_ext)
    VALUES      ('Reed',
                 'Richards',
                 '671',
                 'Eng',
                 5,
                 'USA',
                 '07/27/95',
                 '34000',
                 '444')
    

    文が、emp_no 列の値を含んでいないことは見ることができると思います。

  3. 次の文を使用して、挿入した行を確認します:
    SELECT *
    FROM   employee
    WHERE  last_name = 'Richards'
    

    社員番号は 146 です。トリガが、自動的に新しい社員に次の社員番号を割り当てています。

先に進む前に、ここで作業をコミットしましょう。

次は:

ジェネレータやトリガを使った応用演習