2016-09-20 4 views
0

指定した日付がいずれかのテーブルに挿入または更新されようとしているときは常に、レガシーMySQL 5.1.73データベースにルールを追加する必要があります。 (各フィールドには既定の日付設定が既にあるため、何らかの方法で使用することは実行可能な解決策ではありません)。例えばすべてのデータベースの挿入と更新の日付を変更するグローバルルールを追加します

:このため

IF NewDate = *TheSpecifiedDate* THEN SET NewDate = *ConstantDate* 

ロジックは、1つのまたは複数のDateTimeフィールドを持っているすべてのテーブルの同じになります。

私の唯一の解決策は、手動で各テーブルにトリガを追加することです。これは多くの作業が必要になり、必要条件が変わった場合にも維持するための多くの面倒さがあります。

それで、私は何とかこれを日付/時刻フィールドで挿入または更新を試みるたびにデータベース全体のグローバル化されたルール/トリガーにすることができますか?

トリガーを使用することさえできないこの種のグローバルルールをより洗練された方法で実装する方法がありますか?

+1

機械式ターキーでアウトソーシングします。誰かが12セント/時でそれをするかもしれません:p – Drew

+0

ありがとう@Drew私は誰かがこのアプローチを採用してこの特定のデータベースを最初に使っていたと思いますが、おそらく12セント/時間未満でした! – Bandito

+0

アプリケーションレベルでこのような作業を行います。データベースにあまりにも多くのビジネスロジックを持つのは良いことではありません。 – fancyPants

答えて

0

だけが...似た何かをしようとしている人のために、

これを閉鎖する私のシナリオでの主な制限は、私はゆっくりと200個の以上のレガシーアプリケーションを移行していますので、従来のデータベースの動作を操作することができなかったということでしたかすべてのアプリケーションが変換されるまで構造化されます。私はそれが好きか否かにかかわらず、いくつかの既存の行動を再現する必要もありました!

この質問を投稿したとき、データアクセスレイヤーにEF6を使用していました。 EF Core 1.1.0に変更したので、DBが更新されるたびに値を設定できるようにして、特定の問題を解決するテーブルマッピングで 'HasDefaultValueSql'設定を利用できるようになりました。

関連する問題