Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Dodanie klucza obcego do istniejącej tabeli

ALTER instrukcja dla wielu FOREIGN KEYS nie działa.

Każde CONSTRAINT należy dodawać indywidualnie :

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

Jeśli nazwa ograniczenia wygenerowana przez system nie jest pożądana, to przy użyciu tych;

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

może być preferowane.

PS :

  • Nie używaj NOT NULL z PRIMARY KEY , PRIMARY KEY Już zawiera NOT NULL .
  • Długość nie może być zdefiniowana dla INT kolumna.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Data i godzina Oracle bez czasu letniego za pośrednictwem JDBC

  2. jakiej funkcji użyć w standardowej wersji Oracle, takiej jak partycjonowanie w Oracle Enterprise Edition

  3. Obszar szybkiego odzyskiwania Oracle

  4. INSERT wyzwalacz do wstawiania rekordu w tej samej tabeli

  5. Problemy ze zmianą daty za pomocą spustu w wyroczni