【发布时间】:2013-01-10 21:03:48
【问题描述】:
我想知道如何从OpenERP 中删除合作伙伴并删除所有依赖项。比如orders、sales、invoice等
我尝试打开合作伙伴视图并单击删除按钮。合作伙伴被删除,但相关订单没有被删除。它还会引发错误,因为该合作伙伴现在在数据库中不存在。如何删除合作伙伴并影响所有依赖项?
【问题讨论】:
我想知道如何从OpenERP 中删除合作伙伴并删除所有依赖项。比如orders、sales、invoice等
我尝试打开合作伙伴视图并单击删除按钮。合作伙伴被删除,但相关订单没有被删除。它还会引发错误,因为该合作伙伴现在在数据库中不存在。如何删除合作伙伴并影响所有依赖项?
【问题讨论】:
我可以告诉你如何找到他的所有依赖项,但我会让你决定如何删除它们。我编写了这个 SQL 脚本来查找任何表中任何记录集的依赖关系。您将表名放在最后一行,然后将 (1234) 替换为您要查找其子项的记录 id 集。
当您运行查询时,它将生成一个大的 SQL 语句,然后您可以运行该语句来查看所有子记录。您只需在运行之前删除最后一个UNION ALL。这仅向您显示直接子记录,而不是间接相关的记录。它也不会告诉你工作流表中那些古怪的关系,ir_values 或 ir_model_data。
SELECT 'SELECT ''' || tc.table_name ||
''' as tabname, ''' || kcu.column_name ||
''' as colname, ' || kcu.column_name ||
' as id, count(*) FROM ' || tc.table_name ||
' as cnt WHERE ' || kcu.column_name || ' IN (1234) ' ||
' GROUP BY ' || kcu.column_name || ' UNION ALL '
FROM information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
WHERE constraint_type = 'FOREIGN KEY'
AND ccu.table_name = 'res_partner';
【讨论】: