不允许我在SQL Server

时间:2017-03-21 19:57:12

标签: sql-server database

我正在整理数据库并尝试对所有依赖项进行排序,并且在将一个外键添加到表中时,我一直遇到错误。我已经检查了约束,似乎无法发现,所以我只是想知道问题所在。

  

'PATIENTS'表成功保存了'约会'表    - 无法创建关系'FK_Appointments_PATIENTS'。 ALTER TABLE语句与FOREIGN KEY约束冲突   “FK_Appointments_PATIENTS”。冲突发生在数据库中   “OEPD_PRO”,表“dbo.PATIENTS”,列'PatientNumber'。

这是在我尝试保存表时不断标记的错误。 'PatientNumber'是'PATIENTS'表中的主键,我正在尝试将其作为外键添加到'约会'表中。

ALTER TABLE Appointments
ADD CONSTRAINT FK_PatientAppointments
FOREIGN KEY (PatientNumber) REFERENCES PATIENTS(PatientNumber);

我非常感谢任何帮助/建议。

谢谢, KB

2 个答案:

答案 0 :(得分:2)

检查Appointments无效PatientNumber s

select *
from Appointments a 
where not exists (
  select 1
  from Patients p
  where a.PatientNumber = p.PatientNumber
  )

如果需要删除它们,可以删除它们:

delete a
from Appointments a 
where not exists (
  select 1
  from Patients p
  where a.PatientNumber = p.PatientNumber
  )

然后尝试添加您的外键。

答案 1 :(得分:0)

可能是因为表中已有数据与Foreign Kye值不匹配。假设我在Patients.PatientId中有值1,2和3,并且字段Appointments.PatientId的值为4,因此不符合约束规则。因此,在添加约束之前,请确保表中没有任何此类无效数据。