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

Sự cố tạo khóa nước ngoài trong Oracle

Khi bạn thêm FK, bạn đang liên kết một cột ở dạng con từ bảng bạn đang tạo đến cha của nó từ bảng cha. Do đó, bạn cần cung cấp tên cột con cũng như tên cột mẹ.

Cú pháp chung là

CREATE TABLE table_name
(
  column1 datatype null/not null,
  column2 datatype null/not null,
  ...

  CONSTRAINT fk_column
    FOREIGN KEY (column1, column2, ... column_n)
    REFERENCES parent_table (column1, column2, ... column_n)
);

Lưu ý rằng các cột giữa FOREIGN KEY dấu ngoặc, là từ bảng bạn đang tạo, trong khi các cột đặt cược làN REFERENCES PARENT_TABLE là từ bảng mẹ.

Bạn không có cột được gọi là CollectibleNum trong DiecastItems của bạn . Do đó, cách sau hoạt động tốt bằng cách thêm một cột như vậy:

CREATE TABLE collectibles 
  ( 
     collectiblenum NUMBER(10) NOT NULL, 
     CONSTRAINT collectibles_pk PRIMARY KEY(collectiblenum) 
  ); 

CREATE TABLE diecastitems 
  ( 
     diecastname    VARCHAR2(45) NOT NULL, 
     diecastcopy    NUMBER(2) NOT NULL, 
     diecastscale   VARCHAR2(25), 
     colorscheme    VARCHAR2(25), 
     diecastyear    NUMBER(4), 
     collectiblenum NUMBER(10),   --added column
     CONSTRAINT diecastitem_pk PRIMARY KEY(diecastname, diecastcopy), 
     CONSTRAINT diecastitem_collectible_fk FOREIGN KEY(collectiblenum) 
     REFERENCES collectibles(collectiblenum) 
  ); 

FIDDLE




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Máy khách Oracle ORA-12541:TNS:không có người nghe

  2. truy vấn phân trang nhanh hơn oracle

  3. Kết nối CSDL Oracle TLS1.2 / SSL sử dụng JDBC thin và JKS

  4. khoảng thời gian định dạng với to_char

  5. Tập lệnh bắt đầu và dừng EBS R12