- PR -

ODP.NETでsysdateで更新したい

1
投稿者投稿内容
maya
会議室デビュー日: 2004/07/21
投稿数: 2
投稿日時: 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 で取得する

ということがあるかと思いますが、
皆様はどのような方法でこういうケースを解決していますか?
kanai
ベテラン
会議室デビュー日: 2004/09/13
投稿数: 98
投稿日時: 2004-12-24 12:49
要件に適するかどうかはわかりませんが、UPDATEトリガーを作成するという選択肢もあるかと思います。
いーた
大ベテラン
会議室デビュー日: 2004/07/12
投稿数: 154
お住まい・勤務地: 東京
投稿日時: 2004-12-24 14:12
DateTime.Nowで更新します。
前提としてサーバ間(というか関係するシステム全て)で時刻同期を取る仕組みを設けます。
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2004-12-25 00:28
引用:

kanaiさんの書き込み (2004-12-24 12:49) より:
要件に適するかどうかはわかりませんが、UPDATEトリガーを作成するという選択肢もあるかと思います。


Updateトリガーを作るに1票。この方法だと、ASP.NETのロジックに拠らないので、ACCESSから変更しようが、SQL Plusから更新しようが、更新日付をきっちり更新してくれると言うメリットがあります。場合によってはデメリットかもしれませんが。
_________________
甕星 <mikahosi@abox9.so-net.ne.jp>
http://blogs.msmvp.jp/mikahosi/
にしざき
ぬし
会議室デビュー日: 2003/06/30
投稿数: 304
投稿日時: 2004-12-25 06:57
update トリガ賛成。
忘れがちですが、Update トリガと DataAdapter を併用するのであれば(DB側で値を与えた場合には)更新後の時刻を取得しないと次回の更新に失敗するため、UpdateCommand を明示的に与える必要が出てきますね。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-12-26 13:03
 更新日時は更新するが、、更新日時があっているかのチェックはしない。チェックはSQL文で明示的にする。。。ということでやってます。

 SQL Plusなどでデバッグや初期値の変更などのときはそのまま、プログラムでは“忘れずに”コーディングすることでチェックする。
_________________
1

スキルアップ/キャリアアップ(JOB@IT)