- - PR -
ODP.NETでsysdateで更新したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2004-12-24 12:02
VB.NETでODP.NETを使用してOracleを使用しています
DBテーブルを編集したときに更新日時にsysdateを入れたいのですが どのようにしたらいいのでしょうか? DateTime.Nowの場合はWebサーバの日時で更新されてしまうため DBの時間を使用したいのです Dim adapter As OracleDataAdapter = New OracleDataAdapter adapter.SelectCommand = CreateSelectCommand() Dim cb As OracleCommandBuilder = New OracleCommandBuilder(adapter) Dim ds As DataSet = New DataSet adapter.Fill(ds) For Each row As DataRow in ds.Tables(0).Rows EditRowData(row) row("更新日時") = ? ' sysdate で更新したい Next adapter.Update(ds) 解決法としては ・InsertCommand/UpdateCommandを書く ・select sysdate from dual で取得する ということがあるかと思いますが、 皆様はどのような方法でこういうケースを解決していますか? | ||||
|
投稿日時: 2004-12-24 12:49
要件に適するかどうかはわかりませんが、UPDATEトリガーを作成するという選択肢もあるかと思います。
| ||||
|
投稿日時: 2004-12-24 14:12
DateTime.Nowで更新します。
前提としてサーバ間(というか関係するシステム全て)で時刻同期を取る仕組みを設けます。 | ||||
|
投稿日時: 2004-12-25 00:28
Updateトリガーを作るに1票。この方法だと、ASP.NETのロジックに拠らないので、ACCESSから変更しようが、SQL Plusから更新しようが、更新日付をきっちり更新してくれると言うメリットがあります。場合によってはデメリットかもしれませんが。 _________________ 甕星 <mikahosi@abox9.so-net.ne.jp> http://blogs.msmvp.jp/mikahosi/ | ||||
|
投稿日時: 2004-12-25 06:57
update トリガ賛成。
忘れがちですが、Update トリガと DataAdapter を併用するのであれば(DB側で値を与えた場合には)更新後の時刻を取得しないと次回の更新に失敗するため、UpdateCommand を明示的に与える必要が出てきますね。 | ||||
|
投稿日時: 2004-12-26 13:03
更新日時は更新するが、、更新日時があっているかのチェックはしない。チェックはSQL文で明示的にする。。。ということでやってます。
SQL Plusなどでデバッグや初期値の変更などのときはそのまま、プログラムでは“忘れずに”コーディングすることでチェックする。 _________________ |
1