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

  • 相关阅读:
    poj 1743 Musical Theme 后缀数组
    poj 1743 Musical Theme 后缀数组
    cf 432D Prefixes and Suffixes kmp
    cf 432D Prefixes and Suffixes kmp
    hdu Data Structure? 线段树
    关于position和anchorPoint之间的关系
    ios POST 信息
    CALayers的代码示例
    CALayers详解
    ios中得sqlite使用基础
  • 原文地址:https://www.cnblogs.com/luzhanshi/p/11425452.html
Copyright © 2011-2022 走看看