You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条SQL为Odoo所有合作伙伴统一添加税项?

批量为所有合作伙伴添加税项的SQL修改方案

你可以通过INSERT ... SELECT语法实现批量插入,替代原来的单条VALUES语句,无需循环即可为所有合作伙伴添加税项,以下是两种适配场景的方案:

场景1:res_partner_perception表的id是自增主键(推荐)

如果id字段设置了自增(比如MySQL的AUTO_INCREMENT、PostgreSQL的SERIAL/IDENTITY),可以直接省略id字段,让数据库自动生成唯一ID,避免手动计算的冲突问题:

INSERT INTO res_partner_perception (perception_id, create_date, percent, excluded, partner_id)
SELECT 
    114,    -- 固定的税项ID
    NOW(),  -- 当前时间作为创建日期
    3,      -- 税率
    0,      -- 是否排除(0为不排除)
    id      -- 从合作伙伴表中取所有ID
FROM res_partner;  -- 假设存储合作伙伴的表名为res_partner

场景2:id字段非自增,需手动生成

如果必须手动指定id,可以通过窗口函数生成递增的ID值,确保每个记录的ID唯一:

INSERT INTO res_partner_perception (id, perception_id, create_date, percent, excluded, partner_id)
SELECT 
    -- 基于当前表最大ID,加上行号生成唯一ID
    (SELECT COALESCE(MAX(id), 0) FROM res_partner_perception) + ROW_NUMBER() OVER (ORDER BY rp.id),
    114,
    NOW(),
    3,
    0,
    rp.id
FROM res_partner rp;

额外建议:避免重复插入

如果部分合作伙伴可能已经存在该税项记录(perception_id=114),可以添加过滤条件,只插入未存在的记录:

INSERT INTO res_partner_perception (perception_id, create_date, percent, excluded, partner_id)
SELECT 114, NOW(), 3, 0, rp.id
FROM res_partner rp
WHERE NOT EXISTS (
    -- 检查当前合作伙伴是否已有该税项
    SELECT 1 
    FROM res_partner_perception rpp 
    WHERE rpp.perception_id = 114 AND rpp.partner_id = rp.id
);

内容的提问来源于stack exchange,提问作者HANDBALL PLACE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 06:39:58