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

既存のテーブルへの外部キーの追加

    ALTER 複数のFOREIGN KEYSのステートメント 動作しません。

    CONSTRAINT 個別に追加する必要があります:

    CREATE TABLE Gust ( Gust_ID INT PRIMARY KEY, First_Name VARCHAR(50), Last_Name VARCHAR(50), Email VARCHAR(20), phone_number INT, Address VARCHAR(30) );
    CREATE TABLE Reservation ( Reservation_ID INT PRIMARY KEY, Start_Date Date, End_Date Date );
    CREATE TABLE RoomType ( RoomType_ID INT NOT NULL PRIMARY KEY, Class VARCHAR(10), ExtraPrice INT );
    
    CREATE TABLE Room(Room_ID int PRIMARY KEY, Price INT, Reservation_ID int,Gust_ID int );
    
    ALTER TABLE Room ADD FOREIGN KEY (Room_ID) REFERENCES RoomType(RoomType_ID);
    
    ALTER TABLE Room ADD FOREIGN KEY (Reservation_ID) REFERENCES Reservation(Reservation_ID); 
    -- the table Room is assumed to have a column Reservation_ID 
    
    ALTER TABLE Room ADD FOREIGN KEY (Gust_ID) REFERENCES Gust(Gust_ID);
        -- the table Room is assumed to have a column Gust_ID
    

    システムで生成された制約名が不要な場合は、これらを使用します。

    ALTER TABLE Room ADD CONSTRAINT fk_RoomType_ID FOREIGN KEY (Room_ID) 
                                                   REFERENCES RoomType(RoomType_ID);
    
    ALTER TABLE Room ADD CONSTRAINT fk_Reservation_ID FOREIGN KEY (Reservation_ID) 
                                                    REFERENCES Reservation(Reservation_ID); 
    
    ALTER TABLE Room ADD CONSTRAINT fk_Gust_ID FOREIGN KEY (Gust_ID) 
                                               REFERENCES Gust(Gust_ID);
    

    好まれるかもしれません。

    追伸:

    • NOT NULLは使用しないでください PRIMARY KEYを使用 、PRIMARY KEY すでにNOT NULLが含まれています 。
    • INTの長さを定義することはできません 列。



    1. 外部キーは一意でないインデックスを参照できますか?

    2. Postgresの左外部結合がNullの値を返さない

    3. WHERE句でCOALESCEを正しく使用する

    4. XAと非XAJDBCドライバーのパフォーマンス?