zoukankan      html  css  js  c++  java
  • 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截图:

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

    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的字段。

  • 相关阅读:
    python函数
    python文件IO操作
    LAMP项目上线
    linux下的小工具
    linux下自有服务
    Lesson_Swift2
    枚举
    使用文件流下载附件
    Global中的Timer计时器
    IE11下的NPOI导出提示__doPostBack未定义解决方案
  • 原文地址:https://www.cnblogs.com/luzhanshi/p/11425452.html
Copyright © 2011-2022 走看看