ALTER TABLE testTable ADD column1 NUMBER(1) DEFAULT 0 NOT NULL AFTER column2;
OracleでもmySql構文を使用できないのはなぜですか?上記のコマンドはMySqlで機能します。動作する同等のものを教えていただけますか?
Error report:
SQL Error: ORA-01735: invalid ALTER TABLE option
01735. 00000 - "invalid ALTER TABLE option"
私が提供したOracleコマンドでafter句を使用する方法があるかどうかを尋ねていますか?
SQLは関係代数だからです。テーブル内の「どこ」の列が存在するかどうかは関係ありません。
Oracleで機能させるには、after
句を削除するだけです。 alter table
のOracleドキュメントは ここ ですが、要約すると次のようになります。
alter table testTable
add ( column1 number(1) default 0 not null )
alter table
コマンドにはnoafter
句があります。
Oracleは、テーブルの途中に列を追加することをサポートしておらず、最後に列を追加するだけです。データベースの設計とアプリの機能は、データベーススキーマの列の順序に依存しないようにする必要があります。結局のところ、selectステートメントではいつでも順序を指定できます。
ただし、何らかの理由でテーブルの中央に新しい列が必要な場合は、回避策があります。
CREATE TABLE tab1New AS SELECT 0 AS col1, col1 AS col2 FROM tab1;
DROP TABLE tab1 PURGE;
RENAME tan1New to tab1;
どこ SELECT 0 AS col1
は新しい列であり、必要に応じて元のテーブルから他の列を指定します。置く SELECT 0 AS col1
必要な順序で適切な場所に。
その後、列に対してalter tableステートメントを実行して、それが目的のデータ型であることを確認することができます。
これを試して :
ALTER TABLE testTable ADD column1 NUMBER(1) DEFAULT 0 NOT NULL