sql >> データベース >  >> RDS >> Oracle

Oracleでの外部キー作成の問題

    FKを追加すると、子として列をリンクすることになります。 作成しているテーブルからそのまで 親テーブルから。したがって、親列名だけでなく、子列名も指定する必要があります。

    一般的な構文は

    です。
    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)
    );
    

    FOREIGN KEYの間の列に注意してください 角かっこは、作成しているテーブルからのものであり、列はREFERENCES PARENT_TABLE 親テーブルからのものです。

    CollectibleNumという列がありません DiecastItemsで 。したがって、このような列を追加すると、以下が正常に機能します。

    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) 
      ); 
    

    フィドル




    1. ORA-01031:ビューを選択する際の権限が不十分です

    2. Ubuntu20.04にPostgreSQLをインストールします

    3. データベースの歴史

    4. MySQLのvarchar(max)に相当しますか?