oracle删除默认值无效,oracle设置默认值无效

一次做农行的项目,在向一个表插入数据时我们要求插入字符类型的操作日期和时间,我们这边当时采取的是给日期和时间字段设置默认值的方法:下面我简单还原一下当时的表结构

-- 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截图:

b5e9472c1d93dc817e8f03f92fee2a5a.png

当时我们使用的框架生成的插入语句是:

INSERT INTO TEST_DATE_TIME (ID,OPERDATE,OPERDATETIME)VALUES(0,null,null)

结果就造成默认值并没有生效:

5265e6e07443cade2b76504abc760581.png

后来查询资料才明白原因:

其实对于默认值,Oracle支持两种方式:

1. Default关键字

2. 不指定列

先看第一种方式:

INSERT INTO TEST_DATE_TIME (ID,OPERDATE,OPERDATETIME)VALUES(1,default,null)

762931c302152e8b0bc3a93f4aff2817.png

再看第二种方式:

INSERT INTO TEST_DATE_TIME (ID)VALUES(2)

f4aefd93cb0e59e9dffa88e262409831.png

综上所述,Oracle的默认值处理要当心,如果项目应用中使用的是ORM工具,则必须要考虑对于字段为Null的处理,必要时在ORM工具中将Null转换为default或插入时去掉值为Null的字段。

标签:default,无效,DATE,VALUES,TEST,TIME,oracle,默认值

来源: https://www.cnblogs.com/luzhanshi/p/11425452.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值