Replies: 2 comments
-
这个确实是有意优化的,防止报错了,很多人对报错敏感,想报错,可以在aop.auditvalue处理。 |
Beta Was this translation helpful? Give feedback.
0 replies
-
前后端若遗漏校验,数据库往往是数据把关的最后一关,既然设计非空,就应该报错。 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
如下数据表,Col1 对应字段不允许 NULL,Col2 对应字段允许 NULL
执行如下插入操作:
entity 实例化后属性 Col1、Col2 值均为 null,Col1 被设计为非空,因此插入操作应该不成功。
实际却是插入成功:插入的记录的 Col1 是空字符串,Col2 正常是 NULL,且执行后 entity 实例里 Col1 属性值也被改为空字符串。
Insert() 设计如此?
insert 时应该给 Col1=NULL 让插入失败而不是 Col1='',除非自行给 Col1 赋值了空字符串,因为让 null 插入成功会造成不易察觉的错误。
FreeSql 版本:3.2.830
数据库:Sqlite/SqlServer/PostgreSQL/MySql 均插入成功,只有 Oracle (版本11g) 插入失败,因 Oracle 默认将空字符串''按NULL处理,因此插入失败。
Beta Was this translation helpful? Give feedback.
All reactions