web-dev-qa-db-ja.com

SQL既存の列に外部キーを追加

SQL Server 2008で次のSQLコマンドを使用して外部キー制約でテーブルを更新するとします。

ALTER TABLE Employees
ADD FOREIGN KEY (UserID)
REFERENCES ActiveDirectories(id)

UserIDEmployeesテーブルのFK列です。 UserIDテーブルでActiveDirectoriesを参照しようとしています。私はこのエラーを受け取ります:

外部キー 'UserID'が参照テーブル 'Employees'の無効なカラム 'UserID'を参照しています。

98

エラーは、EmployeesテーブルにUserID列がないことを示しています。最初に列を追加してからステートメントを再実行してください。

ALTER TABLE Employees
ADD CONSTRAINT FK_ActiveDirectories_UserID FOREIGN KEY (UserID)
    REFERENCES ActiveDirectories(id);
176
BluesRockAddict

たぶんあなたは後ろ向きにあなたのコラムを得ましたか?

ALTER TABLE Employees
ADD FOREIGN KEY (UserID)           <-- this needs to be a column of the Employees table
REFERENCES ActiveDirectories(id)   <-- this needs to be a column of the ActiveDirectories table

列がIDテーブルでEmployeesUserIDテーブルでActiveDirectoriesと呼ばれているのでしょうか。

それならあなたのコマンドは次のようになるでしょう。

ALTER TABLE Employees
ADD FOREIGN KEY (ID)                   <-- column in table "Employees"
REFERENCES ActiveDirectories(UserID)   <-- column in table "ActiveDirectories" 
17
marc_s

MySQL/SQL Server/Oracle/MSアクセス:

ALTER TABLE Orders
ADD FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)

FOREIGN KEY制約の命名を許可し、複数の列にFOREIGN KEY制約を定義するには、次のSQL構文を使用します。

MySQL/SQL Server/Oracle/MSアクセス:

ALTER TABLE Orders
ADD CONSTRAINT fk_PerOrders
FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
2

将来は。

ALTER TABLE Employees
ADD UserID int;

ALTER TABLE Employees
ADD CONSTRAINT FK_ActiveDirectories_UserID FOREIGN KEY (UserID)
    REFERENCES ActiveDirectories(id);
0
Krishneil

activeDirectories(id)のための正しい外部キー作成の方法は、私は主な間違いはあなたがActiveDirectoriesテーブル内のIDの主キーを言及していないということだと思います

0
ALTER TABLE Faculty 
WITH CHECK ADD  CONSTRAINT FKFacultyBook
FOREIGN KEY FacId
REFERENCES Book Book_Id

ALTER TABLE Faculty 
WITH CHECK ADD  CONSTRAINT FKFacultyStudent 
FOREIGN KEY FacId
REFERENCES Student StuId
0
Sandy bhardwaj