0

一つの質問

データベース: オラクル

これが stmt です (説明: タイプ VARCHAR を CLOB に変更します)

ALTER TABLE XX
 ADD (TEMP_Value CLOB);
UPDATE XX SET TEMP_Value=Value;
COMMIT;
ALTER TABLE XX DROP COLUMN Value;
ALTER TABLE XX
RENAME COLUMN TEMP_Value TO Value;

問題: 新しい clob-column は XX テーブルの最後の列です (通常)。value second が最後の列の場合, シーケンスを変更する方法

4

2 に答える 2

0

ここで議論

MYSQL ALTER TABLE TABLENAME ADD COL1 AFTER COL2Oracle は、コマンドとは異なり、テーブルの途中に列を追加することをサポートしていません。列を最後に追加するだけです。データベースの設計とアプリの機能は、データベース スキーマの列の順序に依存しないようにする必要があります。結局のところ、select ステートメントでいつでも順序を指定できます。これがベスト プラクティスです。

SELECT * FROM TABLE良い習慣ではありません。

ただし、何らかの理由でテーブルの中央に新しい列を作成する必要がある場合は、回避策があります。

CREATE TABLE TAB1NEW
AS
    SELECT
          0 AS COL1,
          COL1 AS COL2
    FROM
          TAB1;

DROP TABLE TAB1 PURGE;

RENAME TAB1NEW TO TAB1;

SELECT 0 AS col1 が新しい列であり、必要に応じて元のテーブルから他の列を指定します。必要な順序で適切な場所に SELECT 0 AS col1 を配置します。

その後、必要なデータ型であることを確認するために、列に対して alter table ステートメントを実行することができます。制約、インデックス、パーティションなどを元のテーブルに戻すことを忘れないでください

于 2013-10-14T12:31:47.017 に答える
0

次の解決策を知っていますが、いくつかの列ではあまりスマートではないため、他の解決策を見つけたいと考えています。

create newtable as
select Value, X, XX,..

drop table XX;
rename newtable to XX;
于 2013-10-14T12:07:53.237 に答える