パートナーOpenERP
を削除してすべての依存関係を削除する方法を知りたいです。たとえばorders
、 、sales
、invoice
などです。
パートナー ビューを開いて、削除ボタンをクリックしようとしました。パートナーは削除されますが、関連する注文は削除されません。このパートナーは現在データベースに存在しないため、エラーも発生します。パートナーを削除して、すべての依存関係に影響を与えるにはどうすればよいですか?
彼のすべての依存関係を見つける方法を教えることはできますが、それらをどのように削除するかはあなたに任せます。この SQL スクリプトを作成して、任意のテーブル内の任意のレコード セットの依存関係を見つけました。最後の行にテーブル名を入力し、子を検索するレコード ID のセットに置き換え(1234)
ます。
クエリを実行すると、すべての子レコードを表示するために実行できる大きな 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';