私は約70テーブルのPostgreSQLデータベースを持っており、それぞれに2つのカラム、created_by
とupdated_by
を追加したいと思います。でも、私たちはこのSQLを受け入れていないH2インメモリ・データベースを使用している統合テストのために、テーブルを手動でリストしないでH2データベースの全テーブルにカラムを追加する
DO $$
DECLARE
tables CURSOR FOR
SELECT tablename
FROM pg_tables
WHERE schemaname = 'myschema'
ORDER BY tablename;
BEGIN
FOR table_record IN tables LOOP
EXECUTE
'ALTER TABLE ' || table_record.tablename || ' ADD COLUMN created_by BIGINT; ' ||
'ALTER TABLE ' || table_record.tablename || ' ADD COLUMN updated_by BIGINT;';
END LOOP;
END$$;
しかし:我々はLiquiBaseをを使っているので、私は、PostgreSQLでは正常に動作更新スクリプトを書かれていますPostgreSQL互換モードで動作します。
SELECT * FROM INFORMATION_SCHEMA.TABLES
をが、同様にmyschema
のためにこの作業を行います。From this question、私はすべてのテーブルを選択する方法を知っていますか?結果を保存して列に追加する方法がありますか?私はまた、答えに記載されているように、準備されたステートメントの使い方や書き方を理解していません。
基本的な質問は次のとおりです。すべてのテーブルを手動でリストすることなく、H2データベース用の同等の更新スクリプトを作成するにはどうすればよいですか?
私はいけませんPostgre ..とpuchの経験があります。これはMSSQLの私の解決策になります – Morte
私は実際にH2のためにそれが必要です。 SQLステートメントで構文エラーが発生しました: "..."予期したOR、FORCE、VIEW、ALIAS、SEQUENCE、USER、TRIGGER、ROLE、SCHEMA、CONSTANT、DOMAIN、TYPE、DATATYPE、AGGREGATE、LINKED、 – Cecilya
whileループで「次をフェッチする」ことができませんでした。その編集が完了しました。しかし、私はこれがあなたの問題ではないと思う。sry、h2 dbシステムについてはあまり知らない – Morte