【问题标题】:There are no primary or candidate keys in the referenced table 'factIngresosCurso' that match the referencing column引用表“factIngresosCurso”中没有与引用列匹配的主键或候选键
【发布时间】:2023-03-05 13:39:01
【问题描述】:

请帮忙,我总是收到这条消息:

被引用表“factIngresosCurso”中没有与外键“fk_ingresos_curso”中的引用列列表匹配的主键或候选键。

我的桌子:

create table factIngresos
(
    cicCod char(6),
    curcod char(5) references dimCurso,
    cursec char(2),
    codSec char(1) references dimSeccion,
    tiempoid int references dimTiempo,
    codHor int references dimHorario,
    proCodUno char(5) references dimPersonal,
    vacantes int,
    inscritos int,
    ingresoProyectado money,
    ingresoNeto money,
    becas money default 0,
    constraint pk_Ingresos primary key(cicCod, curCod, curSec) 
)
go

create table factIngCursoAlumno
(
    alucod char(8) references dimAlumno,
    cursec char(2), ciccod char(6), curcod char(5),
    alucurCosto float, alucurefe float,
    alucurPF float,
    constraint pk_facIC primary key(alucod, cursec, ciccod, curcod),
    constraint fk_ingresos_curso 
        foreign key(cursec, ciccod, curcod) references factIngresos(cursec, ciccod, curcod)
)
go

【问题讨论】:

  • 您的外键引用factIngresosCurso,问题中未定义。因此没有足够的信息。
  • 这是一个常见问题解答。请始终在谷歌上搜索您的问题/问题/目标的许多清晰、简洁和特定的版本/措辞,带和不带您的特定字符串/名称,并阅读许多答案。将您发现的相关关键字添加到搜索中。如果您没有找到答案,请发布,使用 1 个变体搜索作为标签的标题和关键字。请参阅向下投票箭头鼠标悬停文本。如果您确实有要发布的非重复代码问题,请阅读并通过minimal reproducible example 采取行动。

标签: sql sql-server foreign-keys


【解决方案1】:

factIngresos 中的主键

cicCod, curCod, curSec

但在您的另一个表中,您使用这些列和序列来引用它:

foreign key(cursec, ciccod, curcod)

如您所见,仅从列名猜测,排序与主键规范中的不同。

您需要确保及其排序 (!!)相同 - 所以我的猜测是,您需要改用这个外键配置:

constraint fk_ingresos_curso 
    foreign key(ciccod, curcod, cursec) references factIngresos(ciccod, curcod, cursec)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多