oracle設定預設值無效

2022-02-06 08:04:03 字數 1267 閱讀 2115

一次做農行的專案,在向乙個表插入資料時我們要求插入字元型別的操作日期和時間,我們這邊當時採取的是給日期和時間字段設定預設值的方法:下面我簡單還原一下當時的表結構

--

create table

create

table

test_date_time

( id

integer

, operdate

varchar2(20) default "to_char"(sysdate,'

yyyy-mm-dd'),

operdatetime

varchar2(20) default "to_char"(sysdate,'

yyyy-mm-dd hh24:mi:ss')

)

plsql截圖:

當時我們使用的框架生成的插入語句是:

insert

into test_date_time (id,operdate,operdatetime)values(0,null,null)

結果就造成預設值並沒有生效:

後來查詢資料才明白原因:

其實對於預設值,oracle支援兩種方式:

1. default關鍵字

2. 不指定列

先看第一種方式:

再看第二種方式:

綜上所述,oracle的預設值處理要當心,如果專案應用中使用的是orm工具,則必須要考慮對於欄位為null的處理,必要時在orm工具中將null轉換為default或插入時去掉值為null的字段。

oracle 設定日期的預設值

oracle 設定日期的預設值 alter table 表名 modify 日期字段 date default sysdate not null to date 2003 12 19 yyyy mm dd to date 2003 12 17 00 00 00 yyyy mm dd hh24 mi ...

MYSQL datetime設定預設值

使用decimal代替float和double儲存精確浮點數 如果用float簡單的浮點數插入操作,居然會產生偏差,坑爹啊由於timestamp是從1970開始的,如果要記錄出生日期,還是需要用datetime 當然,在一般情況下,推薦使用timestamp alter table project ...

spring Value 設定預設值

原文 value 的作用不用說 大家都知道 註解模式下 讀取配置檔案 注入屬性值 mq位址 value private string namesrvaddr 上面的是乙個標著的 value 註解 如果配置檔案中沒有設定 namesrvaddr spring 在啟動的時候講報錯。設定預設值很簡單 va...