sql >> Databáze >  >> RDS >> Oracle

Jak používat výčty v Oracle?

Když jsem si přečetl něco o výčtu MySQL, hádám, že nejbližším ekvivalentem by bylo jednoduché kontrolní omezení

CREATE TABLE sizes (
  name VARCHAR2(10) CHECK( name IN ('small','medium','large') )
);

ale to vám neumožňuje odkazovat na hodnotu pomocí indexu. Složitější vztah cizího klíče by byl také možný

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

Dokud budete pracovat prostřednictvím pohledu, zdálo by se, že funkcionalitu dokážete poměrně dobře replikovat.

Nyní, pokud připustíte řešení PL/SQL, můžete vytvořit vlastní typy objektů, které by mohly zahrnovat logiku pro omezení sady hodnot, které mohou obsahovat, a metody pro získání ID a získání hodnot atd.



  1. Jak vypnu vypršení platnosti hesla Oracle?

  2. Funkce vs. uložená procedura na serveru SQL

  3. Jeden způsob, jak získat hledání indexu pro vedoucí % zástupný znak

  4. Jak použít vypočítaný sloupec k výpočtu jiného sloupce ve stejném zobrazení