簡體   English   中英

外鍵約束SQL

[英]Foreign Key Constraint SQL

不斷收到錯誤無法添加外鍵約束,任何想法都可能是菜鳥錯誤,但我是SQL新手。

CREATE TABLE tblDept (

  Dept VARCHAR(50),
  Name VARCHAR(50)
  );

CREATE TABLE tblPersonnel (

  PersID INT PRIMARY KEY,
  FullName VARCHAR(100),
  Address VARCHAR(100),
  Dept VARCHAR(50),
  Grade VARCHAR (2),
  Salary INT,
  DateOfBirth DATE,
  Manager INT,
  FOREIGN KEY(Dept) REFERENCES tblDept(Dept)

  );

 CREATE TABLE PersonnelPhone (

   PersID INT, 
   Extension INT,
   FOREIGN KEY (PersID) REFERENCES tblPersonnel(PersID)
   );

 CREATE TABLE tblPhone (
   Extension INT,
   DeviceType VARCHAR,
   VoiceMail BOOLEAN,
   FOREIGN KEY (Extension) REFERENCES tblPersonnelPhone(Extension)
   );

第二個表中的Extension必須為PRIMARY KEY

您可能想要實現多對多關系。 在這種情況下, PersonnelPhone Extension應該是FOREIGN KEY ,而tblPhone Extension應該是PRIMARY KEY

那里有幾個錯誤。 這是一個工作模式定義:

CREATE TABLE tblDept (
  Dept VARCHAR(50) PRIMARY KEY, 
  Name VARCHAR(50)
);

CREATE TABLE tblPersonnel (
  PersID INT PRIMARY KEY, 
  FullName VARCHAR(100), 
  Address VARCHAR(100), 
  Dept VARCHAR(50), 
  Grade VARCHAR(2), 
  Salary INT, 
  DateOfBirth DATE, 
  Manager INT, 
  FOREIGN KEY(Dept) REFERENCES tblDept(Dept)
);

CREATE TABLE tblPersonnelPhone (
  PersID INT, 
  Extension INT PRIMARY KEY, 
  FOREIGN KEY (PersID) REFERENCES tblPersonnel(PersID)
);

CREATE TABLE tblPhone (
  Extension INT, 
  DeviceType VARCHAR(100), 
  VoiceMail BOOLEAN, 
  FOREIGN KEY (Extension) REFERENCES tblPersonnelPhone(Extension)
);

供將來參考,請使用SQLFiddle共享這些類型的問題: http ://sqlfiddle.com/#!9/2ce29

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM