2016-11-01 215 views
1

我有一個計劃過程中不斷更新與當前時間戳空timestamp列,但有趣的是我看到這樣的矛盾:奇怪的行爲

的記錄enter image description here

各是更新通過單個更新到單個或多個行:

update timestamp = current_timestamp where row_condition = true; 

但是這可怎麼回事,甲骨文current_timestamp查詢不同呼叫表現不同?一個輸出完全正確的時間戳,但從其他地方輸出的東西(31-DEC-69)?

+0

行爲有什麼不同?另外,你的意思是說你有一個過去將近50年的過程?我不相信。 (或者,你是說31-DEC-69是不正確的,你不知道它爲什麼插入?) – mathguy

+0

@mathguy你是對的問題不是很清楚,所以我更新它。我不知道current_timestamp給出了31-DEC-69 .. – Dreamer

+0

current_timestamp是一個帶時區的時間戳,我猜這個列也是。這意味着創建該記錄的會話的時區是格林威治標準時間4(美國東海岸?),並且正在插入1970年1月1日的紀元時間。 –

回答

0

這聽起來好像您可能具有該列的DEFAULT值。插入行的時間戳列未提供值,因此已使用默認值填充行。

嘗試select data_default from all_tab_columns where table_name = 'YOUR_TABLE'; YOUR_TABLE是表名(請記住用大寫字母寫)。這會告訴你是否有該列的默認值。如果你喜歡,你可以在where子句中添加列名 - 但如果你不這樣做,你可能會發現更多的信息,你可能沒有意識到。

+0

運行查詢,結果爲空。該列沒有默認值.. – Dreamer

+0

桌子上是否有觸發器? – mathguy

+0

無觸發器。哦,忘了提及的tomcat和甲骨文在CENTOS,但應用程序運行在Windows中,但我不認爲這是問題... – Dreamer