sql >> Databáze >  >> RDS >> Oracle

Přidání cizího klíče do existující tabulky

ALTER příkaz pro více FOREIGN KEYS nefunguje.

Každý CONSTRAINT by měl být přidán jednotlivě:

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

Pokud název omezení generovaného systémem nechcete chtít, použijte tyto;

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

může být preferováno.

P.S. :

  • Nepoužívejte NOT NULL s PRIMARY KEY , PRIMARY KEY již obsahuje NOT NULL .
  • Pro INT nelze definovat délku sloupec.



  1. PHP MYSQL -> Zobrazit data uložená jako typ 'datum' z databáze MYSQL

  2. SQL INSERT pro začátečníky

  3. Symfony:Doctrine data fixture:jak zacházet s velkým souborem csv?

  4. pomocí id vrácených z insert into, pro vložení záznamu s cizím klíčem