Når jeg læser lidt om MySQL-oversigten, gætter jeg på, at den nærmeste ækvivalent ville være en simpel kontrolbegrænsning
CREATE TABLE sizes (
name VARCHAR2(10) CHECK( name IN ('small','medium','large') )
);
men det tillader dig ikke at referere værdien ved indekset. Et mere kompliceret udenlandsk nøgleforhold ville også være muligt
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
Så længe du opererer gennem visningen, ser det ud til, at du kan kopiere funktionaliteten rimeligt godt.
Hvis du nu indrømmer PL/SQL-løsninger, kan du oprette brugerdefinerede objekttyper, der kunne inkludere logik for at begrænse det sæt af værdier, de kan indeholde, og for at have metoder til at hente ID'erne og til at hente værdierne osv.