Oracle初心者です。
【前提】
OracleのViewのテストを行っており、Viewのデータ抽出条件に
データ更新年月日(UPDATEYMD)がSYSDATEと同じ月のものという条件を設定しています。
UPDATEYMDはデータ登録時にSYSDATEが登録される設定となっており、
またNOT NULL制約が付いています。
複数のテストデータの内、一部に対し、前月分のデータ更新年月日を持たせるため、
UPDATE文を使用して1ヶ月前の日付を登録をしようと考えています。
【使用した構文】
UPDATE TABLE_NAME SET UPDATEYMD = ADD_MONTHS(SYSDATE,-1) WHERE COL1 IN ('A','B')
【質問】
上記の構文で、UPDATEYMDの日付が1ヶ月前のものに更新出来ず、
UPDATE文発行時のSYSDATEが登録されました。
●想定データ
2017/02/24 16:50:32 ⇒ 2017/01/24 16:50:32
●実際の更新結果
2017/02/24 16:50:32 ⇒ 2017/02/24 16:52:48
他のテーブルにあるUPDATEYMD(NOT NULL制約なし)は
1ヶ月前の日付に更新出来ました。
NOT NULL制約が付いているDATE型に対する暗黙が何かあるのでしょうか。
UPDATEYMDからNOT NULL制約を外すということは出来ないので、
SQLで変更するしか方法がないです。
上記の構文以外でNOT NULL制約が付いているDATE型に「SYSDATE,-1」を
登録する方法があれば教えてください。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/02/25 02:43
2017/02/25 07:50
退会済みユーザー
2017/02/25 08:15
退会済みユーザー
2017/02/27 23:14