3

DBMS_REDEFINITIONパッケージを使用して、テーブル内のいくつかの列を並べ替える必要があります。次のようなテーブルに対してこれを行うにはどうすればよいですか

create table a (z number, x number);

並べ替えられたテーブルの最初の列が x になるように?

(コンテキスト:いくつかのメタデータ列をいくつかの既存のテーブルに追加するいくつかのユーティリティを作成しています。メタデータ列が前面にある場合、すべての関係者にとって有用であるため、SQL開発者または別の開発者でプルしたときに便利に表示できますテーブル閲覧ツール. 論理処理では列の順序は重要ではないという議論は承知していますが、これは、すぐに利用できるツールを使用してテーブルを理解しやすくするためです.)

4

2 に答える 2

1

使用方法はマニュアルに記載されているため、質問の内容がわかりません。

しかし、あなたのテーブルには主キーがないように見える (またはそれについて言及するのを忘れた) ため、dbms_redefinition を使用して再定義できるようにするには、特別なフラグを使用する必要があります。

create table a_ (x number, z number);

begin
  dbms_redefinition.start_redef_table(
    uname => user, 
    orig_table => 'A', 
    int_table => 'A_', 
    options_flag => dbms_redefinition.cons_use_rowid);

  dbms_redefinition.finish_redef_table(
    uname => user, 
    orig_table => 'A', 
    int_table => 'A_');
end;
/

drop table a_;
于 2013-07-07T06:37:49.880 に答える