mysql default设置了默认值但插入依然为null

mysql default设置了默认值但插入依然为null,第1张

mysql default值只有在insert语句中没有这个字段时才会生效,如果insert中有插入该字段而该字段取值又为null,null值将被插入到表中,default此时失效。在mybatis开发中通常会直接插入一个表对象,表中所有字段都会插入,因此如果要设置默认值,应该在业务层写逻辑,而不能依赖mysql的default来设置默认值。

注:可以使用mybatis的动态sql解决该bug

1、首先新建一个学生表:student,需求:字段password的默认值是1213142。

2、如果正常插入值,需要手动添加密码,但是如果有大量的字段可以使用默认值,那么语句会显得有点臃肿。

3、现在我们设置字段password默认值,如图所示,实际上是创建了一个约束,所以图中的 df_pwd_stu 表示的是约束的名称,这时我们自定义的。

4、再次插入,这时可以忽略我们已经设置默认值字段的值了,因为插入的时候回数据库会帮我们插入默认值。完成效果图。

会。

数据库中字段设置的默认值和插入的结果不一致,怎么办?

解决方案1、insert的sql语句贴出来;

解决方案2、先看看你的添加代码是不是有问题,怎么写的;

解决方案3、

我做插入不是直接用sql插的,而是运用EntityFramework代码如下:

using(TestEntitiescontext=newTestEntities())

{varperson=context.CreateObject<PersonsEFEntity>

()person.FirstName="w"person.LastName="m"person.Address="闵行宜山路"person.City="上

海"context.PersonsEFEntitySet.AddObject(person)context.SaveChanges()}

以上代码中我没有给person.isStudent赋值

解决方案5、person.isStudent不赋值就是默认为0;

解决方案7、

数据库脚本:SETQUOTED_IDENTIFIERONGOCREATETABLE[dbo].[Persons]([Id][int]IDENTITY(1,1)NOTNULL,[FirstName][nvarchar](50)NULL,[LastName][nvarchar](50)NULL,[Address][nvarchar](50)NULL,[City][nvarchar](50)NULL,[isStudent][bit]NOTNULL,CONSTRAINT[PK_Persons]PRIMARYKEYCLUSTERED([Id]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY])ON[PRIMARY]GOALTERTABLE[dbo].[Persons]ADDCONSTRAINT[Persons_isStudent]DEFAULT((1))FOR[isStudent]GO默认值是1。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9966003.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-03
下一篇2023-05-03

发表评论

登录后才能评论

评论列表(0条)

    保存