問題タブ [ddl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - マスターddlスクリプトをどのように整理すればよいですか
現在、データベースのマスターddlを作成しています。これまで、バックアップ/復元を使用してデータベースをバージョン管理し、ddlスクリプトを維持していませんでした。スキーマはかなり大きいです。
私の現在の考え:
スクリプトをいくつかの部分に分割します(おそらく別々のスクリプトで):
- テーブルの作成
- インデックスを追加する
- トリガーを追加
- 制約を追加する
各スクリプトは、マスタースクリプトによって呼び出されます。
- テストのために一時的に制約を削除するスクリプトが必要になる場合があります
- スキーマに孤立したテーブルがある可能性があります。疑わしいテーブルを特定する予定です。
他に何かアドバイスはありますか?
編集:また、プロセスの一部を自動化するための優れたツールを知っている人がいる場合は、MS SQL 2000を使用しています(古い、私は知っています)。
oracle - Oracleスキーマの更新をトランザクションでラップします
データベーススキーマを定期的に更新するプログラムがあります。場合によっては、DDLステートメントの1つが失敗することがあります。失敗した場合は、すべての変更をロールバックしたいと思います。次のようなトランザクションで更新をラップします。
実行中に、ステートメントの1つが失敗した場合、COMMITの代わりにROLLBACKを実行します。これはSQLServerではうまく機能しますが、Oracleでは望ましい効果がありません。Oracleは、各DDLステートメントの後に暗黙のCOMMITを実行するようです。
- http://www.orafaq.com/wiki/SQL_FAQ#What_are_the_difference_between_DDL.2C_DML_and_DCL_commands.3F
- http://infolab.stanford.edu/~ullman/fcdb/oracle/or-nonstandard.html#transactions
この暗黙のコミットをオフにする方法はありますか?
nhibernate - NHibernate マッピング ファイルから「移行」DDL を生成するにはどうすればよいですか?
プロジェクトで NHibernate 2 と PostgreSQL を使用しています。SchemaExport クラスは、データベースの DDL スキームを生成する優れた仕事をしますが、最初のアプリケーションまでは優れています。
NHibernate マッピング ファイルを使用して "移行" DLL (DROP/CREATE ペアの代わりに "ALTER TABLE" のバッチ) を生成する方法はありますか?
sql - すべての DDL SQL コマンドは元に戻すことができますか? 【データベースのバージョン管理】
この回答で説明されているような、DB スキーマの変更を追跡するためのメカニズムをセットアップしたいと考えています。
データベースに変更を加えるたびに、新しい移行を作成します。通常、移行には 2 つの方法があります。変更が適用される「上」の方法と、変更が元に戻される「下」の方法です。1 つのコマンドでデータベースが最新の状態になり、データベースを特定のバージョンのスキーマにするために使用することもできます。
私の質問は次のとおりです。「up」メソッドのすべての DDL コマンドは元に戻せますか? つまり、常に「ダウン」メソッドを提供できますか? 「ダウン」できない DDL コマンドを想像できますか?
「up」メソッド中にデータが失われる典型的なデータ移行の問題を考慮しないでください。たとえば、フィールド タイプをdatetime
( DateOfBirth
)からint
( ) に変更すると、YearOfBirth
復元できないデータが失われます。
mysql - MySQL で複数列の PK を宣言するにはどうすればよいですか
MySQL で主キーを構成する 2 つの列を持つテーブルを作成しようとしていますが、構文がわかりません。単一列の PK については理解していますが、2 つの列で主キーを作成するための構文は同じではありません。
mysql - MySQLに列が存在する場合は、ALTERを使用して列を削除します
その列が存在する場合、ALTERを使用してMySQLテーブルの列を削除するにはどうすればよいですか?
を使用できることはわかっていますが、存在しないALTER TABLE my_table DROP COLUMN my_column
場合はエラーがスローされます。my_column
列を条件付きで削除するための代替構文はありますか?
MySQLバージョン4.0.18を使用しています。
sql - MacOS 用の DB スケッチャー?
Mac OS 用の無料のデータベース クリエーターを探していますが、見つかりません。私がダウンロードできる無料のものを知っている人はいますか?
EDIT:アプリケーションがSQL(この場合はmysql)も生成する必要があります:)
タイ
database - SQL Server Express で開発する場合、バージョン管理をどのように管理すればよいですか?
開発マシンで SQL Server Express を使用して Web サイトを開発しています。Web ホスティング会社から SQL Server 2005 が提供されています。
現時点で私が持っているのは、私が開発したデータベースと、ライブ サーバー上にあるデータベースだけです。スキーマを生成するための元のスクリプトはありませんが、作成スクリプトを個別に、またはデータベース全体に対して自動生成できます。
現在、コードをソース管理に入れています。データベース スキーマをどのように管理しているか知りたいです。何を入れますか?コマンドを作成しますか? スクリプトを変更しますか?
現時点ではデータベースは非常に小さく、2 つのデータベースを維持することは難しくありませんが、今後は心配ですが手に負えなくなります。新しいコードをデプロイするときにライブ データベースを同期させるためのヒントはありますか?
編集ソース管理に何を入れるべきかについてのアイデアはありますか? DDL スクリプトをここに配置する必要がありますか?
sql - 誰かが良い SQL パーサーを推奨できますか?
データベースのスキーマをインストール スクリプトの SQL と比較できるツールを作成しようとしています。データベースから情報を取得するのは非常に簡単ですが、インストール スクリプトの解析に少し問題があります。
Google に表示されるいくつかのパーサーで遊んでみましたが、それらはいくぶん不完全に見えました。理想的には、かなり安定していて、半分まともなドキュメントを備えたオープンソースのパーサーを見つけたいと思っています。
また、特定のデータベースに固有の型や構文についてはあまり気にしていません。チェックする必要があるデータベースは非常に単純です。
postgresql - Postgresql で列のコメントを別の列のコメントに設定する
列にコメントを付けて Postgresql でテーブルを作成するとします。
しばらくして、別の列を追加することにしました。
最初の列のコメントの内容を調べて、新しい列に関連付けたい:
(なに?) はシステム テーブルになる予定ですが、pgAdmin を調べたり Web で検索したりしても、その名前を知りませんでした。
理想的には、次のことができるようになりたいです。
しかし、物事を少し遠ざけているような気がします。アイデアをありがとう。
更新: ここで受け取った提案に基づいて、Postgresql 列のデータ型を変更するより大きなプロセスの一部として、コメントを転送するタスクを自動化するプログラムを作成しました。それについては私のブログで読むことができます。