如何插入具有空值的显式 id 属性的数据?

Posted

技术标签:

【中文标题】如何插入具有空值的显式 id 属性的数据?【英文标题】:How to insert data with explicit id property which has null value? 【发布时间】:2019-03-26 02:30:42 【问题描述】:

我有一个带有显式 id 属性的 js 对象。像这样:

const data = 
  user_id: null,
  user_email: faker.internet.email()
;

user_id 的值为 null,并且有一个 users 表使用 user_id 作为其主键。

我想正确插入这个数据,希望knex能遵守主键递增规则。

这是我的代码:

async function insert(user: any) 
  return await knex('users')
    .insert(user)
    .returning('*');

当我尝试插入此数据时,出现错误:

错误:“user_id”列中的空值违反了非空约束

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

您可以将user_id 的值设置为undefined。然后它将插入数据并 遵守主键递增规则。

const data = 
  user_id: undefined,
  user_email: faker.internet.email()
;

检查users 表中插入的行。 user_id的值为1

【讨论】:

以上是关于如何插入具有空值的显式 id 属性的数据?的主要内容,如果未能解决你的问题,请参考以下文章

无法在表实体框架中插入标识列的显式值

具有未定义和空值的排序对象数组

OpenGL着色器的显式与自动属性位置绑定

发出属性的显式接口实现

JavaScriptSerializer 可以排除具有空值/默认值的属性吗?

C# LINQ 组按属性集合,然后按列表定义的显式顺序对每个组进行排序[重复]