Wenn ich ein wenig über die MySQL-Enumeration lese, schätze ich, dass das nächste Äquivalent eine einfache Check-Einschränkung wäre
CREATE TABLE sizes (
name VARCHAR2(10) CHECK( name IN ('small','medium','large') )
);
aber das erlaubt Ihnen nicht, den Wert durch den Index zu referenzieren. Auch eine kompliziertere Fremdschlüsselbeziehung wäre möglich
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
Solange Sie durch die Ansicht arbeiten, scheint es, dass Sie die Funktionalität einigermaßen gut replizieren können.
Nun, wenn Sie PL/SQL-Lösungen zulassen, können Sie benutzerdefinierte Objekttypen erstellen, die Logik enthalten könnten, um den Satz von Werten zu begrenzen, die sie enthalten können, und um Methoden zum Abrufen der IDs und zum Abrufen der Werte usw. zu haben.