繁体   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