INSERT文を使用する例

この項では、INSERT文を使用した例を示します。

INSERT文の使用

TimesTenでは、TimesTen DML文INSERTUPDATEDELETEおよびMERGEがサポートされています。

この例では、AS SELECT問合せ句を使用して表emp_copyを作成し、AUTOCOMMITをOFFに設定してemployee_idを増分するシーケンスを作成した後、PL/SQLのINSERT文を使用してデータ行を表emp_copyに挿入します。

Command> CREATE TABLE emp_copy AS SELECT * FROM employees;
107 rows inserted.
Command> SET AUTOCOMMIT OFF;

Command> CREATE SEQUENCE emp_copy_seq
         START WITH 207
         INCREMENT BY 1;

Command>  BEGIN
            INSERT INTO emp_copy
              (employee_id, first_name, last_name, email, hire_date, job_id,
               salary)
            VALUES (emp_copy_seq.NEXTVAL, 'Parker', 'Cores', 'PCORES', SYSDATE,
              'AD_ASST', 4000);
          END;
          /
 
PL/SQL procedure successfully completed.

続いて、行が挿入されたことを確認した後、トランザクションをロールバックします。

Command> SELECT * FROM EMP_COPY WHERE first_name = 'Parker';
< 207, Parker, Cores, PCORES, <NULL>, 2008-07-19 21:49:55, AD_ASST, 4000, 
<NULL>, <NULL>, <NULL> >
1 row found.
Command> ROLLBACK;
Command>  SELECT * FROM emp_copy WHERE first_name = 'Parker';
0 rows found.

ここで、INSERT文を再実行してから、PL/SQLでトランザクションをロールバックします。最後に、TimesTenによって行が挿入されていないことを確認します。

Command> BEGIN
           INSERT INTO emp_copy
             (employee_id, first_name, last_name, email, hire_date, job_id,
              salary)
           VALUES (emp_copy_seq.NEXTVAL, 'Parker', 'Cores', 'PCORES', SYSDATE,
                   'AD_ASST',4000);
         ROLLBACK;
         END;
         /
 
PL/SQL procedure successfully completed.
 
Command> SELECT * FROM emp_copy WHERE first_name = 'Parker';
0 rows found.