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

Oracleで列挙型を使用するにはどうすればよいですか?

    MySQL列挙型について少し読んで、最も近いものは単純なチェック制約になると思います

    CREATE TABLE sizes (
      name VARCHAR2(10) CHECK( name IN ('small','medium','large') )
    );
    

    ただし、インデックスで値を参照することはできません。より複雑な外部キー関係も可能です

    CREATE TABLE valid_names (
      name_id   NUMBER PRIMARY KEY,
      name_str  VARCHAR2(10)
    );
    
    INSERT INTO valid_sizes VALUES( 1, 'small' );
    INSERT INTO valid_sizes VALUES( 2, 'medium' );
    INSERT INTO valid_sizes VALUES( 3, 'large' );
    
    CREATE TABLE sizes (
      name_id NUMBER REFERENCES valid_names( name_id )
    );
    
    CREATE VIEW vw_sizes
      AS 
      SELECT a.name_id name, <<other columns from the sizes table>>
        FROM valid_sizes a,
             sizes       b
       WHERE a.name_id = b.name_id
    

    ビューを操作している限り、機能を適切に複製できるように思われます。

    これで、PL / SQLソリューションを認める場合、保持できる値のセットを制限したり、IDを取得したり値を取得したりするメソッドを持つロジックを含むカスタムオブジェクトタイプを作成できます。



    1. Oracleのテーブルから偶数レコードを選択する方法は?

    2. OracleのBIN_TO_NUM()関数

    3. DISTINCTでCOUNT(*)を選択する

    4. PostgreSQLの特定のスキーマですべてのオブジェクトの所有権を変更するにはどうすればよいですか?