4.32.1 PURGE TABLE文の形式と規則
(1) 機能
実表中の行をすべて削除します。
(2) 使用権限
表に対するDELETE権限を持つユーザが,その表の行を削除できます。
(4) オペランド
(a) 〔認可識別子.〕表識別子
- 認可識別子
-
表を所有するユーザの認可識別子を指定します。
認可識別子に"MASTER"は指定できません。認可識別子を省略した場合については,「名前の修飾」を参照してください。
- 表識別子
-
行をすべて削除する実表の名称を指定します。
(b) 〔{ WITH ROLLBACK | NO WAIT }〕
WITH ROLLBACK,又はNO WAITを省略した場合は,すべての行を削除する表がほかのユーザのトランザクションによって使用されていたら,そのトランザクションが終了してから実行します。
システム定義のpd_check_pendingオペランドにUSEを指定した場合,すべての行を削除する表を被参照表とする参照表がほかのユーザのトランザクションによって使用されていたときは,トランザクションが終了してから参照表を検査保留状態に設定します。
- WITH ROLLBACK
-
行をすべて削除する表がほかのユーザで使用されていたら,トランザクションを取り消して無効にします。
システム定義のpd_check_pendingオペランドにUSEを指定した場合,行をすべて削除する表を被参照表とする参照表がほかのユーザのトランザクションに使用されているときは,トランザクションを取り消して無効にします。
- NO WAIT
-
行をすべて削除する表がほかのユーザで使用されていたら,トランザクションを取り消さないで,このSQLを無効にします。
システム定義のpd_check_pendingオペランドにUSEを指定した場合,行をすべて削除する表を被参照表とする参照表がほかのユーザのトランザクションによって使用されているときは,トランザクションを取り消さないで,このSQLを無効にします。
(5) 共通規則
-
PURGE TABLE文が正常に実行された場合は,処理完了と同時にCOMMITされます。
-
LOB列又はLOB属性を格納するユーザLOB用RDエリアが更新凍結状態の場合,そのLOB列又はLOB属性がある表に対してPURGE TABLE文は実行できません(実行すると凍結済みエラーとなります)。
-
改竄防止表に対してPURGE TABLE文は実行できません。
-
共用表に対してPURGE TABLE文を実行した場合,共用表のEXCLUSIVE指定のLOCK文相当の排他が掛かります。HiRDB/パラレルサーバの場合,全バックエンドサーバで掛かります。
(6) 検査保留状態に関する規則
-
システム定義のpd_check_pendingオペランドにUSEを指定した場合,操作対象表が被参照表のときは,操作対象表を参照する参照表を検査保留状態に設定します。
-
操作対象表が検査保留状態である場合,操作対象表の検査保留状態を解除します。ただし,次の条件のどちらかを満たす場合,ディクショナリ表中の検査保留状態は解除されません。そのため,整合性チェックユティリティを使用し,ディクショナリ表中の検査保留状態を解除してください。
-
システム定義のpd_check_pendingオペランドにNOUSEを指定している。
-
インナレプリカ機能を使用している。
-
(7) 留意事項
-
PURGE TABLE文はビュー表に対して指定できません。
-
PURGE TABLE文は,OLTP下のX/Openに従ったUAPから指定できません。また,OLTP下のUAPから手続きを呼び出す場合,PURGE TABLE文を使用した手続きは実行できません。
-
PURGE TABLE文は,トリガの動作中は実行できません。
-
システム定義のpd_check_pendingオペランドにUSEを指定するか,又は指定を省略した場合,コマンド又はユティリティとPURGE TABLE文を同時に実行できないことがあります。詳細については,マニュアル「HiRDB システム定義」のpd_check_pendingオペランドの説明を参照してください。
(8) 使用例
在庫表(ZAIKO)のすべての行を削除します。
PURGE TABLE ZAIKO TRUNCATE TABLE ZAIKO