あなたが言ったように。FOREIGN KEY通常、同じテーブルを参照する制約は階層構造用であり、主キーを参照するために別の列を使用します。良い例は従業員のテーブルです:
EmployeeId Int Primary Key
EmployeeName String
ManagerId Int Foreign key going back to the EmployeeId
したがって、この場合、テーブルからそれ自体に戻る外部キーがあります。すべてのマネージャーは従業員でもあるため、ManagerId実際EmployeeIdにはマネージャーのものです。
一方、誰かEmployeeIdがEmployeeテーブルへの外部キーとして使用することを意味する場合、それはおそらく間違いでした。私はテストを実行しましたが、それは可能ですが、実際には使用できません。
CREATE TABLE Employee (EmployeeId Int PRIMARY KEY,
EmployeeName varchar(50),
ManagerId Int);
ALTER TABLE Employee ADD CONSTRAINT fk_employee
FOREIGN KEY (EmployeeId) REFERENCES Employee(EmployeeId);