batch_update 主键加入表
Posted
技术标签:
【中文标题】batch_update 主键加入表【英文标题】:Batch_update primary key joining table 【发布时间】:2012-08-23 13:10:58 【问题描述】:我在使用 codeigniter 的批量更新功能时遇到问题,我正在为我的产品和类别使用连接表,因为我有多对多的关系。高高在上找了一个答案,还是一无所获,所以特地来这里向更多的高级技术人员寻求帮助。
我在表“product_category”中有 2 列,其中包含“product_id”和“category_id”,因此我可以将 1 个产品链接到多个类别。我已经设法执行插入所有 id 的插入查询,但更新不起作用。这是我的代码:
型号:
function update_product_cat($product, $cat_id)
$data = array();
foreach( $product as $index => $value )
$data[] = array(
'product_id' => $value ,
'category_id' => $cat_id[ $index ]
);
$this->db->update_batch('product_category', $data,
'product_id');
数组:
Array ( [0] => Array ( [product_id] => 327 [category_id] => 3 ) [1] => Array ( [product_id] => 327 [category_id] => 5 ) [2] => Array ( [product_id] => 327 [category_id] => 7 ))
我的错误代码:
错误号:1062
键“PRIMARY”的重复条目“327-3”
UPDATE
任何帮助将不胜感激:product_category
SET category_id
= CASE WHEN product_id
= '327' THEN '3' WHEN product_id
= '327' THEN '5' WHEN product_id
= '327' THEN '7' ELSE category_id
END WHERE product_id
IN ('327','327','327')
谢谢
【问题讨论】:
请花点时间格式化您的代码。如果您寻求帮助,请让人们想要帮助并让他们轻松。 我试过了,这是我第一次使用你的所见即所得,老实说这很痛苦,抱歉,我的代码被突出显示不是吗? 这叫markdown,不是所见即所得,我说的更多的是换行之类的东西,见***.com/editing-help 抱歉,这是我的第一次,下次会更加小心,感谢您的提醒...... 无论如何,请您为我的问题指出正确的方向吗? 【参考方案1】:我不是 100% 确定这是您的全部问题,但看起来 product_category 表已将 product_id 设置为主键 - 看起来您正在尝试输入许多相同的 product_id。如果是这种情况,您可能应该只使用常规更新而不是批量更新,更不用说删除/替换主键了。
【讨论】:
以上是关于batch_update 主键加入表的主要内容,如果未能解决你的问题,请参考以下文章