如何在仅使用SQL的Oracle中使用枚举?(无PSQL)
在MySQL中,您可以执行以下操作:
CREATE TABLE sizes (
name ENUM('small', 'medium', 'large')
);
在甲骨文中,类似的方法是什么?
如何在仅使用SQL的Oracle中使用枚举?(无PSQL)
在MySQL中,您可以执行以下操作:
CREATE TABLE sizes (
name ENUM('small', 'medium', 'large')
);
在甲骨文中,类似的方法是什么?
读一读关于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解决方案,您可以创建自定义对象类型,其中可以包含逻辑,以限制它们可以持有的值集,并具有获取ID和值的方法,等等.