2010-12-01 6 views
0

私は、ミッションクリティカルでないプロジェクト用にMySQLデータベースを作成することを検討しています。テーブルに別の列を挿入する必要が生じた場合、既存の列のデータの整合性を損なうことなく、これらの追加の列の既定値を指定することなく、どのようにして達成することができますか?私は、SQLとJava Persistence API(JPA)の両方の回答を希望します。将来のSQLテーブルの校正?

また、親テーブルのセル内にテーブルを追加する方法も知りたいと思います。

答えて

0

列の追加は、このようなマルチカラムインデックス、ユニークキー、または類似した何かを作成するように、既存のデータには影響を与えません。しかし、新しい列&の間にこのようなリンケージがない場合は、好きなだけ多くの列を追加してください。夢中になる!コードは、列の代わりのキーワード列を配置するために参照している場合、あなたのコードに影響を持っているかもしれ

4

それは簡単です:あなたはそれをデフォルト値を与えることができます

ALTER TABLE mytable 
ADD COLUMN newcolumn VARCHAR(20) 

、あなただけの最後に列を追加するために「XYZ」欄(後にそれを追加したり、それを残すためにAFTER xyz句を使用することができます)。

これは特別なことではありません.RDBMSを使用すると、オンザフライでデータベースに列を追加(および削除)できます。

+0

そして、Hibernate/JPAコードはどうですか? – Catfish

1

前述のように、選択したRDBMSの構文を使用して、単に表に列を追加できます。

あなたはその時点で、あなたのコードを変更したくない場合は、あなたが行うことができ、すべては賢明なデフォルト(nullでは、あまりにも、賢明なデフォルトの可能性)を提供しています。そうすれば、アプリケーションは問題なく行を挿入できます。後で列をマップし、アプリケーションで使用することができます。

公正であるために、dbschemaアップデートを新しいバージョンのアプリケーションと共にリリースするのはかなり一般的です。あなたが列をリンクする何かをしない限り、

1

一つのことです。 firstnameが5の位置にあると予想される場合は、キーワードfirstnameで参照するのではなく、テーブルの最後に新しい列を追加するとよいでしょう。