我在magento中的这样的表中插入行:
$table = Mage::getSingleton('core/resource')->getTableName('table_name');
$write = Mage::getSingleton('core/resource')->getConnection('core_write');
$write->insertMultiple($table,$rows);
$rows
是我插入其2D数组的数据,我有一个主键'entity_id'
和另一个列order_id
,它们具有唯一约束。
在插入之前我想检查表中是否存在order_id,如果有一行order_id
,则更新其他明智的插入。
如果我插入重复的insertMultiple
,我发现order_id
会引发错误。如何根据表中的唯一约束列进行插入或更新。感谢
编辑:
我需要一些想法:
INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
答案 0 :(得分:1)
查看Varien_Db_Adapter_Pdo_Mysql::insertOnDuplicate()
:
/**
* Inserts a table row with specified data.
*
* @param mixed $table The table to insert data into.
* @param array $data Column-value pairs or array of column-value pairs.
* @param array $fields update fields pairs or values
* @return int The number of affected rows.
* @throws Zend_Db_Exception
*/
public function insertOnDuplicate($table, array $data, array $fields = array())
您必须单独插入每一行,但您可以定义应如何处理重复键。我认为在你的情况下你想要更新行,所以你需要$table
和$data
作为参数。