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

  • 相关阅读:
    613. Shortest Distance in a Line
    182. Duplicate Emails
    181. Employees Earning More Than Their Managers
    180. Consecutive Numbers
    612. Shortest Distance in a Plane
    178. Rank Scores
    177. Nth Highest Salary
    610. Triangle Judgement
    二维气泡弹窗
    jQuery触发a标签的click事件和原生javascript的区别
  • 原文地址:https://www.cnblogs.com/luzhanshi/p/11425452.html
Copyright © 2011-2022 走看看