データモデルの変更の処理方法
アプリケーションのデータモデルを変更する際、変更はすぐにはデータベースに反映されません。これは、アプリケーションをデプロイする際にのみ発生しますが、データを失うことがないように行われます。
このトピックでは、OutSystemsが以下を処理する方法について説明しています。
- アトリビュートの削除
- アトリビュートの追加
- アトリビュート名の変更
- アトリビュートのデータ型の変更
- TextアトリビュートのLengthプロパティの変更
アトリビュートの削除
エンティティアトリビュートを削除すると、OutSystemsはデータベースからではなく、アプリケーションモデルからエンティティアトリビュートを削除します。その結果、開発環境ではそのアトリビュートが使用できなくなります。
それでもなお、データはデータベース上に安全に保存されています。データベースで直接、またはアプリケーションをロールバックすることでデータにアクセスできます
アトリビュートを削除した後、OutSystemsはエンティティより多くの列がデータベースにあることを警告します。詳細については、「データベース整合性の提案」をご覧ください。
アトリビュートの追加
エンティティにアトリビュートを追加すると、OutSystemsは同じ名前の列が関連するテーブルにすでに存在しているかどうかについてデータベースを確認します。このような列がない場合、OutSystemsは列を作成します。
この名前のアトリビュートがエンティティにあるものの、ある時点で削除していた場合、OutSystemsは関連するデータベースの列を保持します。
この場合、OutSystemsは既存のデータベースの列を再利用しようとします。新しいアトリビュートのデータ型がデータベース上に存在するデータ型とは異なる場合、OutSystemsはアプリケーションをデプロイする際にデータ型を変換します。
- データを失うことなくデータ型を変換できた場合、デプロイは正常に終了します。
- データ型を変換できなかった場合、OutSystemsはエラーを表示し、アプリケーションをパブリッシュしません。これにより、データは常に安全になります。
詳細については、「アトリビュートのデータ型の変更」セクションをご覧ください。
アトリビュート名の変更
アトリビュート名を変更すると、OutSystemsは新しい名前でデータベースに新しい列を作成します。古い列は、すべてのデータをデータベースにそのまま残していても、開発環境では使用できません。
データベースに同じ名前の列がすでにある場合、OutSystemsはアトリビュートを既存のデータベースの列にマッピングしようとします。OutSystemsは、列のデータ型を必要に応じて変換しようとします。
アトリビュートのデータ型の変更
データベーステーブルにデータが保存されている場合、OutSystemsは値を新しいデータ型に変換しようとします。変換できない場合、またはデータ損失を引き起こす可能性がある場合、変更は行われず、OutSystemsはDatabase Upgrade(データベースアップグレード)エラーを表示します。
変換はご利用のデータベース管理システムによって行われるため、そのドキュメントを参照してサポートされている型の変換についてご確認ください。
TextアトリビュートのLengthプロパティの変更
OutSystemsでは、2つの異なるデータ型を使用してデータベースに文字列を保存します。使用されるデータ型は文字列のサイズによって異なります。詳細については、「データベースのデータ型」をご覧ください。
Textアトリビュートの文字数を2,000文字以下から2,000文字以上に変更する際は、データベースの列のデータ型が変更されます。
2,000文字以上から2,000文字以下への文字数の変更はできません。この変更をデプロイしようとしても、データ損失を引き起こす可能性があるため、OutSystemsではエラーが発生し、アプリケーションが変更されることはありません。