Azure SQL Server(Mac环境)创建多列外键失败,请求排查原因
错误原因及解决方法
核心问题
你的PatientVisits表使用的是复合主键:(PatientKey, VisitDate),这意味着只有当这两个字段组合在一起时,才构成该表的唯一标识,单独的PatientKey或VisitDate都不是该表的主键/候选键。
而你在创建PatientVisitSymptoms表时,试图为PatientKey和VisitDate分别建立独立的外键,这种方式违反了外键的约束规则:外键必须完整匹配引用表中已有的主键或唯一约束的列集合,不能拆分复合主键单独设置外键。
修正后的代码
将两个字段作为一个整体创建外键即可解决问题,同时建议修正字段拼写错误(Sympton → Symptom):
CREATE TABLE PatientVisitSymptoms ( PatientKey NCHAR(15), VisitDate DATE, Symptom VARCHAR(100), PRIMARY KEY (PatientKey, VisitDate), FOREIGN KEY (PatientKey, VisitDate) REFERENCES PatientVisits (PatientKey, VisitDate) );
补充说明
修正后的外键会确保PatientVisitSymptoms中的每一条记录,都能在PatientVisits表中找到对应的(PatientKey, VisitDate)组合,符合数据完整性的要求。
内容的提问来源于stack exchange,提问作者Daph
相关产品推荐
相关产品推荐

