在表中插入行时的外键约束



我在尝试在表中插入一些行时出错。这是我的实体之间的关联问题,但我不知道如何解决。

banque_statistiquecolle表是空的,我无法插入任何行,banque_colle包含一些行。我尝试插入的行链接到这些banque_colle行。

查询:

INSERT INTO banque_statistiquecolle (id, colle_id, effectif, moyenne, mediane, note100, major, minor)
SELECT sc.id, sc.colle_id, sc.effectif, sc.moyenne, sc.mediane, sc.note100, sc.major, sc.minor
FROM statistiquecolle_groupe scg 
LEFT JOIN  statistiquecolle sc ON sc.id = scg.statistiquecolle_id
WHERE scg.groupe_id = 1 
AND sc.id NOT IN (SELECT sc1.id
FROM statistiquecolle_groupe scg1 
LEFT JOIN  statistiquecolle sc1 ON sc1.id = scg1.statistiquecolle_id
WHERE scg1.groupe_id != 1)

错误 :

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: 
a foreign key constraint fails ('tutotour_tharmo18052017test'.'banque_statistiquecolle', 
CONSTRAINT 'FK_5C1250C5F0B40A43' FOREIGN KEY ('colle_id') REFERENCES 'banque_colle' ('id'))

BanqueStatistiqueColle Entity :

/**
* BanqueStatistiqueColle
*
* @ORMTable(name="banque_statistiquecolle")
* @ORMEntity
*/
class BanqueStatistiqueColle
{
/**
* @var integer
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORMManyToOne(targetEntity="PACESBanqueBundleEntityBanqueColle")
* @ORMJoinColumn(name="colle_id", referencedColumnName="id")
*/
private $colle;
{Other properties}
/**
* @ORMOneToMany(targetEntity="PACESBanqueBundleEntityBanqueRepartitionColle", mappedBy="idStatColle",
* cascade={"all"})
*/
private $repartitionsColle;

银行实体 :

/**
* Colle
*
* @ORMTable(name="banque_colle")
* @ORMEntity
* @ORMInheritanceType("JOINED")
* @ORMDiscriminatorColumn(name="discr", type="string")
* @ORMDiscriminatorMap({"colle"="BanqueColle", "colleQC"="BanqueColleQC"})
*/
class BanqueColle
{
/**
* @var integer
*
* @ORMColumn(name="id", type="integer")
* @ORMId
* @ORMGeneratedValue(strategy="AUTO")
*/
protected $id;
{Other properties}
/**
* @ORMOneToMany(targetEntity="PACESBanqueBundleEntityBanqueStatistiqueColle", mappedBy="colle", cascade={"all"})
*/
protected $statsColle;

错误是不言自明

完整性约束冲突:1452 无法添加或更新子行: 外键约束失败

当两个表与外键关系绑定时,在这种情况下,您只能在子表中插入父表中已存在的那些值。

您的外键关系为:

FOREIGN KEY ('colle_id') REFERENCES 'banque_colle' ('id'))

因此,您只能在colle_id中插入那些已经在'banque_colle' ('id'))列中的值。

相关内容

  • 没有找到相关文章