SQL Server 2008で次のSQLコマンドを使用して外部キー制約でテーブルを更新するとします。
ALTER TABLE Employees
ADD FOREIGN KEY (UserID)
REFERENCES ActiveDirectories(id)
UserID
Employees
テーブルのFK列です。 UserID
テーブルでActiveDirectories
を参照しようとしています。私はこのエラーを受け取ります:
外部キー 'UserID'が参照テーブル 'Employees'の無効なカラム 'UserID'を参照しています。
エラーは、EmployeesテーブルにUserID列がないことを示しています。最初に列を追加してからステートメントを再実行してください。
ALTER TABLE Employees
ADD CONSTRAINT FK_ActiveDirectories_UserID FOREIGN KEY (UserID)
REFERENCES ActiveDirectories(id);
たぶんあなたは後ろ向きにあなたのコラムを得ましたか?
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
テーブルでEmployees
、UserID
テーブルでActiveDirectories
と呼ばれているのでしょうか。
それならあなたのコマンドは次のようになるでしょう。
ALTER TABLE Employees
ADD FOREIGN KEY (ID) <-- column in table "Employees"
REFERENCES ActiveDirectories(UserID) <-- column in table "ActiveDirectories"
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)
将来は。
ALTER TABLE Employees
ADD UserID int;
ALTER TABLE Employees
ADD CONSTRAINT FK_ActiveDirectories_UserID FOREIGN KEY (UserID)
REFERENCES ActiveDirectories(id);
activeDirectories(id)のための正しい外部キー作成の方法は、私は主な間違いはあなたがActiveDirectoriesテーブル内のIDの主キーを言及していないということだと思います
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