SQL,为什么在创建报告表时会出现此错误?

时间:2017-06-23 23:45:24

标签: mysql sql sql-server

SQL,为什么在创建报告表时会出现此错误?

这是错误

引用表('患者')中没有与外键'FK__Reports__Patient__2B3F6F97'中引用的列列表匹配的主键或候选项。 男装。 1750年,16级,0国,29号线 无法创建限制或索引。查看以前的错误。

这是我的查询

create database kanirmaConnections;
use kanirmaConnections
go

create table Messages(
  Id int identity primary key,
  Recieve varchar(100),
  Sender varchar(100),
  Message varchar(100),
  Idf int,
  foreign key(Idf) references UserData(Id),
);

create table Patients(
  PatientID int identity,
  Name varchar(100),
  Age int,
  Gender varchar(20),
  BG varchar(100),
  problem varchar(100),
  Address varchar(100),
  city varchar(20),
  pincode int,
  Idf int,
  foreign key(Idf) references UserData(Id),
);

create table Reports(
  Id int identity,
  PatientName varchar(100),
  disease varchar(30),
  briefExplain varchar(100),
  symptoms varchar(100),
  Admited varchar(100),
  Idf int,
  PatientIDf int,
  primary key(Id, Idf, PatientIDf),
  foreign key(Idf) references UserData(Id),
  foreign key(PatientIDf) references Patients(PatientID),
);

create table UserData(
  Id int identity primary key,
  Username varchar(20),
  password varchar(30),
  Email varchar(100),
  job varchar(20),
);

/**********************
primary key (Id_usuario),
foreign key (Id_especialidadf) references Especialidad (Id_especialidad),
foreign key (Id_rolf) references Roles (Id_rol)
**********************/

2 个答案:

答案 0 :(得分:3)

您收到此错误是因为PatientId被声明为整数标识,但未声明为主键:

create table Patients(
  PatientID int identity primary key,
  Name varchar(100), --  ^^^^^^^^^^^
  Age int,
  Gender varchar(20),
  BG varchar(100),
  problem varchar(100),
  Address varchar(100),
  city varchar(20),
  pincode int,
  Idf int,
  foreign key(Idf) references UserData(Id),
);

同样的问题适用于您的Reports表。

答案 1 :(得分:1)

首先必须创建UserData表。

第二个为患者表添加主键。

我希望它会对你有所帮助。

create table UserData(
  Id int identity primary key,
  Username varchar(20),
  password varchar(30),
  Email varchar(100),
  job varchar(20),
);

create table Messages(
  Id int identity primary key,
  Recieve varchar(100),
  Sender varchar(100),
  Message varchar(100),
  Idf int,
  foreign key(Idf) references UserData(Id),
);

create table Patients(
  PatientID int identity primary key,
  Name varchar(100),
  Age int,
  Gender varchar(20),
  BG varchar(100),
  problem varchar(100),
  Address varchar(100),
  city varchar(20),
  pincode int,
  Idf int,
  foreign key(Idf) references UserData(Id),
);

create table Reports(
  Id int identity ,
  PatientName varchar(100),
  disease varchar(30),
  briefExplain varchar(100),
  symptoms varchar(100),
  Admited varchar(100),
  Idf int,
  PatientIDf int,
  primary key(Id, Idf, PatientIDf),
  foreign key(Idf) references UserData(Id),
  foreign key(PatientIDf) references Patients(PatientID),
);