数据库库设计:字段默认值二详解数据库

在设计数据库时使用了数据库默认字段的方法,设置了默认值

create table EAS.T_userLevel  ( 
   UL_ID                INTEGER                         not null, 
   UL_userLevel2  INTEGER default 0 not null, 
   UL_userLevelTime2      DATE default sysdate not null 
   
);

,但插入数据库的数据显示如下:

数据库库设计:字段默认值二详解数据库

第一个字段UL_userLevel2生成的数据默认值是0,没有问题,但第二个字段UL_userLevelTime2默认值却是1-01-01 00:00:00很奇怪,

想了很长时间才发现原来是因为我使用ORM映射,不允许字段为空,导致系统给字段设置了默认值,导致数据库的默认值被覆盖了。

 public class UserLevel : EasActiveRecordCRUDEx<UserLevel> 
    { 
        [PrimaryKey(PrimaryKeyType.Sequence, "UL_ID", SequenceName = "EAS.Seq_userLevel")] 
        public int UL_ID 
        { 
            get; 
            set; 
        } 
        /// <summary> 
        /// 员工 
        /// </summary> 
        [Property] 
        public int UL_user_FK 
        { 
            get; 
            set; 
        }          
        /// <summary> 
        /// 等级 
        /// </summary> 
        [Property] 
        public int UL_userLevel2 
        { 
            get; 
            set; 
        } 
        /// <summary> 
        /// 绩效等级 
        /// </summary> 
        [Property] 
        public string UL_userLevel2A 
        { 
            get; 
            set; 
        } 
        /// <summary> 
        /// UL_userLevel2 的评定时间 
        /// </summary> 
        [Property] 
        public DateTime UL_userLevelTime2 
        { 
            get; 
            set; 
        } 
        
    }

如果如下就可以使用数据库的默认值了

 public DateTime? UL_userLevelTime2 
        { 
            get; 
            set; 
        }

看来最安全的默认值方法还是构造函数

 public UserLevel() 
        { 
            this.UL_userLevelTime2 = DateTime.Now; 
        }

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/6685.html

(0)
上一篇 2021年7月17日
下一篇 2021年7月17日

相关推荐

发表回复

登录后才能评论