当前位置:  开发笔记 > 后端 > 正文

如何在Oracle中使用枚举?

如何解决《如何在Oracle中使用枚举?》经验,为你挑选了1个好方法。

如何仅使用SQL在Oracle中使用枚举?(没有PSQL)

在MySQL中你可以做到:

CREATE TABLE sizes (
   name ENUM('small', 'medium', 'large')
);

在Oracle中执行此操作的类似方法是什么?



1> Justin Cave..:

阅读一下有关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, <>
    FROM valid_sizes a,
         sizes       b
   WHERE a.name_id = b.name_id

只要您通过视图操作,您似乎可以合理地复制功能.

现在,如果您接受PL/SQL解决方案,您可以创建自定义对象类型,其中可以包含限制它们可以容纳的值集的逻辑,以及获取ID和获取值等的方法.

推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有