互联网服务PostgreSQL

主键id字段设置not null&seq自增之后, 插入数据时id字段赋值null报错?

如题,id字段设置了主键且自增,但是插入数据时的语句为 insert into table (id,name) values (null, 'zhagnsan')  会报错,但是这种语句在mysql是可以执行的,如何解决呢?正常情况下逻辑会有带id和不带id新增数据的情况...显示全部

如题,id字段设置了主键且自增,但是插入数据时的语句为 insert into table (id,name) values (null, 'zhagnsan')  会报错,但是这种语句在mysql是可以执行的,如何解决呢?正常情况下逻辑会有带id和不带id新增数据的情况

收起
参与17

查看其它 4 个回答甘草片的回答

甘草片甘草片软件开发工程师安天科技

1   首先说这个是数据库基础理论问题
2   我个人认为myslq 也不会成功 (如果id 是数字类型的主键)
可以再聊聊你的正式需求和场景

软件开发 · 2022-01-14
浏览1174
  • 感谢评论, 1.以下代码是亲测可以成功的 CREATE TABLE `entity4` ( `id` int(11) NOT NULL AUTO_INCREMENT, `fitem_field` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb3; insert into entity4 (id,fitem_field) values (null,666); 2.我们的场景是 1).正常的不带id新增数据 2).某些场景下 删除当前记录,并记录当前记录id,并重新组装新纪录的数据,赋予id字段值为刚才记录的值,然后带id新增数据 所以理论上是可以分为addDataWithId 和 addDataWithoutId两个方法的,但是如何公用一个方法呢?
    2022-01-14
  • 这个你可以看看pg的触发器去控制一下。应该好弄,mysql我估计也是在这个流程中做的控制。插入前做了一个判断。pg我感觉也可以写一下。这个就属于每个数据库的特性了。说实话,我真的想不出来什么时候会出现这个问题,insert 语句是为什么会把null 放在里面。
    2022-01-15

回答者

甘草片
甘草片162151
软件开发工程师安天科技
擅长领域: 数据库服务器存储

甘草片 最近回答过的问题

回答状态

  • 发布时间:2022-01-14
  • 关注会员:6 人
  • 回答浏览:1174
  • X社区推广