0

SQLの実行順序に問題があります。

1つのディレクトリの下のテーブルごとに1つのSQLスクリプトファイルがあります。例:ディレクトリc:\SqlScriptsにuser.sqlとrole.sqlがあります。これらのSQLファイルを実行するためにSQLMavenプラグインを使用しています。

ロールテーブルにはユーザーテーブルへのForiegnキーがあり、プラグインがuser.sqlの前にrole.sqlを実行しようとしているため、実行は失敗します。c:\ SqlScripts * .sqlとして指定しているため、orderfile属性を使用できません。

この問題を解決するにはどうすればよいですか?

私は2つの解決策を見ます:

  1. すべてのスクリプトを作成順に1つのファイルにマージします。ロールを作成するスクリプトは、ユーザーを作成するスクリプトの後にあります。

  2. *ワイルドカードを削除し、実行順に属性内の各ファイルを指定します。

  3. 実行順序に従ってファイルの名前に番号を付けます(例:1_user.sql、2_role.sql)。「昇順」のorderfile属性を使用します(順序が適用されない可能性があるため、これが機能するかどうかはわかりません)。

よりエレガントなソリューションはありますか?

4

1 に答える 1

0

c:\SqlScripts*.sql として指定しているため、orderfile 属性を使用できません。

明らかに、これは厳密な順序要件がない場合にのみ機能します。もしあなたがそうするなら...

この問題を解決するにはどうすればよいですか?

...決定論的な方法で順序付けを処理できるセットアップを使用します。

3 つの解決策が表示されます (...)。もっとエレガントなソリューションはありますか?

私はあなたが釘付けになったと思います。私の好みはオプション 3 です。

于 2010-10-14T16:05:43.487 に答える