Javaでトリガーのバッチを作成するためのスクリプト

/ *
*パラメータfieldsは、
データテーブルのすべてのフィールドの配列タイプを示します
* データテーブルのフィールドを取得するSQLステートメントを以下に示します* /

    private static CharSequence createUpdateTrriger(String tableName, String[] fields) {
        StringBuilder sb = new StringBuilder();  
        sb.append("create trigger tri_"+tableName+"_update\n"  
                        + "  after UPDATE on " + tableName + "\n"  
                        + "  for each    row\n "  
                        + "begin\n"  
                        + "  insert into " + tableName +"_his"+ "\n"  
                                + "(" + "id_his");  
        for(int i = 0 ; i < fields.length ; i++){  
            if(!"QZKRKSJ".equals(fields[i])&& !"QZKXGSJ".equals(fields[i]) && !"".equals(fields[i])){  
                sb.append(", "+ "`"+fields[i]+"`");  
            }  
        }
        sb.append(",htime");//time_trig
        sb.append(")\n"  
                + "(SELECT REPLACE(UUID(), '-', '')");  
        for(int i = 0 ; i < fields.length ; i++){  

            if(!"QZKRKSJ".equals(fields[i])&& !"QZKXGSJ".equals(fields[i]) && !"".equals(fields[i])){  

                sb.append(",new."+ fields[i]);  
            }  
        }  
        sb.append(",now());\nend; " + "\n" + "\n"); 
        return sb.toString();
    }
获取数据表的字段的sql语句:
String sql = "select COLUMN_NAME from information_schema.COLUMNS where table_name ='"+tableName+"'"+"and TABLE_SCHEMA='"+schema+"'"; 

さらに、トリガー
、トリガーに関する非表示のバグデータベースの移行プロセス中に実行されます。図に示すように、トリガー作成ステートメントのコメントには、前のトリガーで作成されたユーザー名が含まれます。
ここに写真の説明を書きます

移行後、データソースのユーザー名が変更された場合、システムはエラーを報告し、元のユーザーが見つかりません。
エラー:定義者として指定されたユーザー( 'ユーザー名' @ '%')は存在しません
。ユーザー名を置き換えてトリガーを再作成してください。

137の元の記事を公開 123のような 250,000以上を訪問

おすすめ

転載: blog.csdn.net/lz20120808/article/details/80846368