sql >> データベース >  >> RDS >> Oracle

クラスター化された列定義と互換性のない列定義

    columnRandomがnumber(38,0)であることを確認しますか?オラクルではNUMBER!=NUM​​BER(38,0)

    2つのテーブルを作成しましょう。

    create table src_table ( a number);
    create table src_table2( a number(38,0));
    
    select column_name,data_precision,Data_scale from user_tab_cols where table_name like 'SRC_TABLE%';
    

    クエリの結果はです。列の定義が異なります。

    +-------------+----------------+------------+
    | Column_name | Data_Precision | Data_scale |
    +-------------+----------------+------------+
    | A           |                |            |
    | A           |             38 |          0 |
    +-------------+----------------+------------+
    

    そして、最初のテーブルのクラスターを作成しようとすると。

    CREATE TABLE Table_cluster
    CLUSTER myLovelyCluster (a)
    AS SELECT * FROM src_table ;
    

    ORA-01753: column definition incompatible with clustered column definition

    2番目の場合はすべて問題ありません。

    CREATE TABLE Table_cluster
    CLUSTER myLovelyCluster (a)
    AS SELECT * FROM src_table2 ;
    

    selectにキャストを追加した場合。実行も正しいです。

    CREATE TABLE Table_cluster CLUSTER myLovelyCluster  (a)
    AS SELECT cast(a as number(38,0)) FROM src_table;
    



    1. 結果を他のテーブルmysqlと比較します

    2. ORA-29280の解決方法:無効なディレクトリパス

    3. クライアントのIPアドレスをMySQLの列に取得するためのトリガーを作成します

    4. ユニオンを持つ複数のテーブルからカウント依存行を選択します