我正在编写更新表Customer
、Contact
和User
:的脚本
Message: SQLSTATE[23000]: Integrity constraint violation:
1452 Cannot add or update a child row:
a foreign key constraint fails
(`bat`.`contact`, CONSTRAINT `FK_Contact`
FOREIGN KEY (`customerid`) REFERENCES `customer` (`idCustomer`)
ON DELETE NO ACTION ON UPDATE NO ACTION) `
CustomController.php
public function addCustomer(array $data)
{
//var_dump($data);
if(!empty($data))
{
$Customer = new Admin_Model_DbTable_Customer();
$customerid = $Customer->fetchRow($Customer->select()->where('intra = ?', $data['intra']));
if( $customerid->idCustomer > 0){
$this->update($data, array('intra = ?' => $data['intra']));
echo "UPDATE ". $data['intra'];
return true;
} else {
$row = $this->createRow();
$row->intra = $data['intra'];
$row->fabname = $data['fabname'];
$row->namecustomer = $data['namecustomer'];
$row->adresse = $data['adresse'];
$row->city = $data['city'];
$row->zipcode = $data['zipcode'];
$row->country = $data['country'];
$row->phone = $data['phone'];
$row->representative = $data['representative'];
$row->idUser = $data['idUser'];
$lastId = $row->save();
echo "LAST ID = $lastId";
return $lastId;
}
}
}
提前感谢
定义外键时,update
delete
insert
join
操作有一些限制,具体取决于您的设计。此限制有助于您在数据库中拥有有效数据。但如果您想强制查询提交update
delete
insert
join
,您可以使用
$Customer->select()->setIntegrityCheck(false);//仅适用于
join
或添加
SET FOREIGN_KEY_CHECKS=FALSE;//对于所有查询
在查询之前。
另一个解决方案是找到完整性问题。例如,您可能希望update
或insert
为一行,并将外键设置为引用表中不存在的值。