3

パートナーOpenERPを削除してすべての依存関係を削除する方法を知りたいです。たとえばorders、 、salesinvoiceなどです。

パートナー ビューを開いて、削除ボタンをクリックしようとしました。パートナーは削除されますが、関連する注文は削除されません。このパートナーは現在データベースに存在しないため、エラーも発生します。パートナーを削除して、すべての依存関係に影響を与えるにはどうすればよいですか?

4

1 に答える 1

0

彼のすべての依存関係を見つける方法を教えることはできますが、それらをどのように削除するかはあなたに任せます。この 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';
于 2013-02-20T00:33:12.063 に答える