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

-- 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. 不指定列
先看第一种方式:

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

再看第二种方式:

INSERT INTO TEST_DATE_TIME (ID)VALUES(2)

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

oracle设置默认值无效的更多相关文章

  1. .net mvc Html.DropDownListFor 设置默认值无效

    错误描述: 控制器部分: //从数据字典中加载下拉框 (使用DropDownListFor,SelectList 中不需要设置选中值,即便设置了选中值,也会优先读取Model中对应的值) ViewBa ...

  2. mysql datetime设置now()无效,直接用程序设置默认值比较好

    mysql datetime设置now()无效的,没有此用法,datetime类型不能设置函数式默认值,只能通过触发器等来搞.想设置默认值,只能使用timestamp类型,然后默认值设置为:CURRE ...

  3. c#为字段设置默认值,以及构造函数初始化List对象。

    1.为字段设置默认值 /// <summary> /// 默认值 /// </summary> ; ; /// <summary> /// 页的大小 /// < ...

  4. Extjs editor 设置默认值

    一.前言 Ext js 给 editor 设置默认值用 value 无效,在 Model 中添加 defaultValue 即可. 二.实例 view: Ext.define('xxxx.view.P ...

  5. easyui-textbox使用value设置默认值失效

    1,使用easyu-textbox的value参数设置默认值失效,easyui-textbox放到dialog弹框中,当dialog的closed为false时,也就是打开dialog时,设置的val ...

  6. ng-option指令使用记录,设置默认值需要注意

    ng-options一般有以下用法: 数组作为数据源: label for value in array select as label for value in array label group ...

  7. 《Entity Framework 6 Recipes》中文翻译系列 (14) -----第三章 查询之查询中设置默认值和存储过程返回多结果集

    翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 3-6在查询中设置默认值 问题 你有这样一个用例,当查询返回null值时,给相应属性 ...

  8. EF Core1.0 CodeFirst为Modell设置默认值!

    当我们使用CodeFirst时,有时候需要设置默认值! 如下 ; public string AdminName {get; set;} = "admin"; public boo ...

  9. 使用mysql 命令行,增加 ,删除 字段 并 设置默认值 及 非空

    使用mysql 命令行,增加 ,删除 字段 并 设置默认值 及 非空 添加 alter table table_name add field_name field_type; 添加,并设置默认值,及非 ...

随机推荐

  1. KVM命令记录

    创建qcow2镜像qemu-img create -f qcow2 /vm/kvm/img/vm41.img 500G 创建虚拟机virt-install --name=vm41 --disk pat ...

  2. 【转】awk学习笔记

    Awk学习笔记 整理:Jims of 肥肥世家 <jims.yang@gmail.com> Copyright © 2004 本文遵从GPL协议,欢迎转载.修改.散布. 第一次发布时间:2 ...

  3. systemd自启动tomcat

    tomcat自启动service [Unit] Description=Tomcat After=network.target [Service] Type=forking PIDFile=/usr/ ...

  4. 3.Https服务器的配置

    1.前言: 所谓区块链,简而言之就是一种数据结构,每一个区块都像账本的每一页纸记录了该网络上的交易信息,而众多区块在时间的基础上按照顺序连接起 来就形成了区块链.区块链能够以数字方式识别和跟踪交易,并 ...

  5. vmware 兼容问题

    1.出现此问题的原因是Device Guard或Credential Guard与Workstation不兼容.2.Windows系统的Hyper-V不兼容导致.解决方法: 步骤一:禁用Device ...

  6. docker镜像pull不下来最终解决方法

    pull镜像wordpress下来,但是出现如下错误: # docker pull wordpress:latest Error response from daemon: Get https://r ...

  7. 访问网络资源的方式--application/json和x-www-form-urlencoded

    以Jsoup为例,x-www-form-urlencoded方式 Map<String,Object> map = new HashMap<>(); map.put(" ...

  8. SSH服务端

  9. Django2.1.1与xadmin0.6.0遇到的坑

    Django2.1.1与xadmin0.6.0遇到的坑 BlueMiaomiao关注4人评论11188人阅读2018-09-23 12:17:56 (1)django2.0把from django.c ...

  10. Redis介绍、安装、配置

    NoSQL介绍 NoSQL(NoSQL=Not Only SQL),意为反SQL运动,是一项全新的数据库革命性运动.指的是非关系型数据库,解决了传统的关系型数据库,难以解决的超大规模和高并发的的问题 ...