2016-04-08 17 views
1

データベースにいくつかのデフォルトデータを挿入する必要があります。私は、Flywayとの統合でSpring Bootを使用しています。テストのために、私はH2を使います。本番環境では、MySQLが使用されます。h2データベースに特定のUUIDを挿入するにはどうすればよいですか?

私は別のマイグレーションスクリプトを作って、デフォルトのデータにデータベース固有のものを使うことができます(テーブルの作成は共通のスクリプトで行います)。

INSERT INTO survey_definition (id, name, period) 
VALUES (0x2D1EBC5B7D2741979CF0E84451C5BBB1, 'disease-activity', 'P1M'); 

がどのように私はH2に対して同じ操作を行うことができますMySQLの

、私はこのようなものがありますか?

私はRANDOM_UUID()関数しか見つかりませんでしたが、それは後のステートメントでは外部キーとして使用しているため、既知のUUIDを使用する必要があります。

+1

生産よりもテスト用のデータベースが作って災害のようだ。最初にテストしない限り、コードがMySQL上で正しく実行されることをどのように確認できますか? – tadman

答えて

1

すべてのデータベースで動作する構文を使用すると最適です。私はほとんどのデータベースが0x構文をサポートしていないと思います。 H2の場合、これは動作します:

INSERT INTO survey_definition (id, name, period) 
VALUES ('2D1EBC5B7D2741979CF0E84451C5BBB1', 'disease-activity', 'P1M'); 

しかし、クロスデータベース構文を取得するには、(例えば、uuid用)、ユーザー定義関数を作成し、使用する必要があります。

異なるを使用して
INSERT INTO survey_definition (id, name, period) 
VALUES (uuid('2D1EBC5B7D2741979CF0E84451C5BBB1'), 'disease-activity', 'P1M'); 
+0

ユーザ定義関数について詳しく説明できますか?どのようにそれを作成し、どのように見えるのですか? –

+0

これはデータベースによって異なります。 H2の場合、1つのパラメータを持ち、そのパラメータを返します。 –

関連する問題