Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да използвам enums в Oracle?

Четейки малко за MySQL enum, предполагам, че най-близкият еквивалент би бил просто ограничение за проверка

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 решения, можете да създадете персонализирани типове обекти, които биха могли да включват логика, за да ограничите набора от стойности, които могат да държат, и да имате методи за получаване на идентификаторите и за получаване на стойностите и т.н.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. групово вмъкване от Java в Oracle

  2. Кога трябва да използвам точка и запетая срещу наклонена черта в Oracle SQL?

  3. Изберете последния ред за всяка група от oracle

  4. Какво представлява двойната таблица в Oracle?

  5. Изберете стойност на xml елемент в Oracle