構文 構文 構文 構文 図 図 図
図4-47 ROLLBACKコマンドコマンドコマンドコマンド
用途 用途 用途 用途
カレント・シノニムで実行された操作をすべて取り消します。
前提条件 前提条件 前提条件 前提条件 なし。
表 表 表
表4-42 ROLLBACKコマンドで使用される引数コマンドで使用される引数コマンドで使用される引数コマンドで使用される引数
使用上の注意 使用上の注意 使用上の注意 使用上の注意
まだトランザクションに入っていないと、Oracle Liteは、SQL文を最初に発行した地点から 開始します。COMMITまたはROLLBACKコマンドを使用するまでは、発行する文はすべ てトランザクションと解釈されます。
COMMITコマンドは、トランザクションの開始に至るまでのすべてを保存して、データ ベース内のデータに対する変更を永久的なものにします。変更がコミットされるまで、変更 を格納できるように、あるいは、データを前の状態にリストアできるように、新旧両方の データが存在します。
ROLLBACKコマンドは、保留されているカレント・トランザクションで行われたデータに
対する変更を破棄して、トランザクションの開始前の状態にデータベースをリストアしま す。SAVEPOINTを指定して、トランザクションの部分をロールバックできます。
引数引数
引数引数 説明説明説明説明
work ANSI互換性を提供するためにサポートされているオプションの 引数。
TO セーブポイントまでロールバックできるようにするためのオプ ションの引数。
savepoint_name その地点までロールバックするセーブポイントの名前。
ALTER USER
例 例 例 例
次の例は、新しい行をDEPT表に挿入し、その後、そのトランザクションをロールバックし ます。この例は、ROLLBACKおよびROLLBACK WORKの両方について、同じ結果を返し ます。
INSERT INTO DEPT (deptno, dname, loc) VALUES (50, 'Design', 'San Francisco');
SELECT * FROM dept;
次の結果を返します。
DEPTNO DNAME LOC
--- - 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 50 DESIGN SAN FRANCISCO ROLLBACK WORK;
SELECT * FROM dept;
次の結果を返します。
DEPTNO DNAME LOC
--- - 10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON ODBC 2.0
ROLLBACKコマンドはODBC SQL構文の一部ではありませんが、ODBCはこのコマンド
をそのままデータベースに渡します。
ODBCプログラムは通常、SQL_ROLLBACKフラグを指定したAPIコールSQLTransact() を使用します。
重要重要
重要重要: Oracle Liteは、CREATE DATABASE以外は、DDLコマンドを自
動的にコミットすることはありません。Oracle Lite内のDDLコマンドは、
ロールバックの対象となります。
ALTER USER
SQLコマンド 4-79 関連項目
関連項目 関連項目 関連項目 SAVEPOINT
ROWNUM 疑似列 疑似列 疑似列 疑似列
用途用途 用途用途
問合せによって返される各行について、ROWNUM疑似列は、Oracle Liteが表または結合 行のセットから行を選択した順番を示す番号を返します。選択された最初の行は、
ROWNUMは1で、2番目の行は2、というようになります。
前提条件前提条件 前提条件前提条件 なし。
使用上の注意 使用上の注意 使用上の注意 使用上の注意
同じ副問合せ内でROWNUMの後にORDER BY句が続く場合、行はORDER BY句によっ て並べ替えられます。結果は、行がアクセスされる方法によって異なることがあります。た
とえば、ORDER BY句によってOracle Liteがデータのアクセスに索引を使用する場合、
Oracle Liteは、索引なしの場合と異なる順番で行を取り出す可能性があります。
副問合せ内にORDER BY句を入れて、最上位の問合せにROWNUM条件が指定されている 場合、行の並べ替えの後で、ROWNUM条件の適用を強制できます。例3を参照してくださ い。
例例 例例1
次の例は、問合せで返される行数を制限するために、ROWNUMを使用します。
SELECT * FROM emp WHERE ROWNUM < 10;
例 例 例 例2
次の例は、同じ問合せ内で、ORDER BY句をROWNUMの後に指定します。したがって、
行はORDER BY句によって並べ替えられ、前の例と同じ結果にはなりません。
SELECT * FROM emp WHERE ROWNUM < 11 ORDER BY empno;
例例 例例3
次の問合せは、最小の従業員番号を10個返します。これは、「トップN問合せ」と呼ばれる こともあります。
SELECT * FROM
(SELECT empno FROM emp ORDER BY empno) WHERE ROWNUM < 11;
ALTER USER
例 例 例 例4
次の問合せは行を返しません。
SELECT * FROM emp WHERE ROWNUM > 1;
最初にフェッチされた行は、ROWNUMに1が割り当てられ、条件がFALSEにされます。2 番目にフェッチされる行は、今では最初の行となり、それにもROWNUMに1が割り当て られ、条件がFALSEにされます。後に続く行にはすべて条件を満たすことに失敗し、その ため、行には何も返されません。
例 例 例 例5
次の文は、表の各行に一意の値を割り当てます。
UPDATE tabx SET col1 = ROWNUM;
関連項目関連項目 関連項目関連項目 LEVEL疑似列