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

PHẠM VI cho một bảng REFs

Bạn muốn thêm phạm vi vào COLUMN_VALUE cột giả của bảng lồng nhau:

ALTER TABLE cyclers_tab ADD SCOPE FOR ( COLUMN_VALUE ) IS cycler;

Nếu sau đó bạn làm:

INSERT INTO cycler ( name ) VALUES ( 'c1.1' );
INSERT INTO cycler ( name ) VALUES ( 'c1.2' );

INSERT INTO team (
  name,
  cyclers
) VALUES (
  'team1',
  t_cycler_list(
    ( SELECT REF(c) FROM cycler c WHERE name = 'c1.1' ),
    ( SELECT REF(c) FROM cycler c WHERE name = 'c1.2' )
  )
);

Sau đó, bạn có thể chèn hàng. Tuy nhiên, nếu bạn có một bảng khác cùng loại đối tượng:

CREATE TABLE cycler2 OF t_cycler (
    name PRIMARY KEY
);

INSERT INTO cycler2 ( name ) VALUES ( 'c2.1' );

Và cố gắng thực hiện:

INSERT INTO team (
  name,
  cyclers
) VALUES (
  'team2',
  t_cycler_list(
    ( SELECT REF(c) FROM cycler2 c WHERE name = 'c2.1' )
  )
);

Sau đó, bạn gặp lỗi:

db <> fiddle tại đây




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tìm các hàng trùng lặp trong cơ sở dữ liệu

  2. Lỗi SQL:ORA-12899:giá trị quá lớn cho cột

  3. Tạo Java trên cơ sở dữ liệu Oracle với JDBC

  4. Giữ trật tự từ mệnh đề 'IN'

  5. cách tìm nạp, xóa, cam kết từ con trỏ