Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Làm thế nào để sử dụng enums trong Oracle?

Đọc một chút về MySQL enum, tôi đoán điều tương đương gần nhất sẽ là một ràng buộc kiểm tra đơn giản

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

nhưng điều đó không cho phép bạn tham chiếu giá trị theo chỉ mục. Một mối quan hệ khóa ngoài phức tạp hơn cũng sẽ có thể xảy ra

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

Miễn là bạn thao tác thông qua chế độ xem, có vẻ như bạn có thể sao chép chức năng một cách hợp lý.

Bây giờ, nếu bạn thừa nhận các giải pháp PL / SQL, bạn có thể tạo các loại đối tượng tùy chỉnh có thể bao gồm logic để giới hạn tập giá trị mà chúng có thể giữ và có các phương thức lấy ID và nhận giá trị, v.v.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dấu gạch dưới không hoạt động trong mệnh đề oracle like

  2. .NET / Oracle:Cách thực thi một tập lệnh với các câu lệnh DDL theo chương trình

  3. Công cụ dành cho nhà phát triển Oracle SQL:Tải xuống &Cài đặt

  4. C #:Không thể truyền đối tượng từ DbNull sang các kiểu khác

  5. Giải thích Điểm Đau Chi phí Kế hoạch