insert(data, [returning])   

创建一个插入查询,将要插入到行中的属性的哈希值或插入数组作为单个插入命令执行。

如果传递返回的数组,例如['id','title'],它将使用所有具有指定列的所有添加行的数组来解析promise /实现回调。这是返回方法的快捷方式

(1) 在mysql”、“sqlite”、“oracle”中返回新增ID,并放在数组中[5];在“postgresql”中默认返回空数组[],除非设置了“returning”参数。 

let banji_id = await knex('banji').insert({name: '测试大牛班'});

输出: 

INSERT INTO `banji`(`name`) VALUES ('测试大牛班')

返回: 返回当前记录的ID,格式为[5]  


(2) 插入多行,规范空值。 

let obj = await knex('banji').insert([{name: '防御班'}, {name: '进攻班'},  {code: '200991', name: '智谋班'}]);

输出: 

INSERT INTO `banji` (`code`, `name`) VALUES (DEFAULT, '防御班'), (DEFAULT, '进攻班'), ('200991', '智谋班')

返回: 返回第一个记录的ID,如:[7]  


(3) “MySQL”,“SQLite”返回第一个记录的ID;“PostgreSQL”返回所有记录的ID,如下案例。 

let obj = await knex.insert([
{
name: '防御班'},
{name: '进攻班'},
{code: '200991', name: '智谋班'}
]
, ['banji_id']).into('banji');

输出: 

INSERT INTO `banji` (`code`, `name`) VALUES (DEFAULT, '防御班'), (DEFAULT, '进攻班'), ('200991', '智谋班')

返回: 返回第一个记录的ID,如:[7]  ;PostgreSQL返回[7,8,9]


(4) 如果有人喜欢用未定义的密钥NULL代替,DEFAULT则可以useNullAsDefault在knex config中提供配置参数。

const knex = require('knex')({
client: 'mysql',
connection: {
host: '127.0.0.1',
user: 'your_database_user',
password: 'your_database_password',
database: 'myapp_test'
},
useNullAsDefault: true
});
let obj = await knex('banji').insert([{name: '防御班'}, {name: '进攻班'},  {code: '200991', name: '智谋班'}]);

输出: 

INSERT INTO `banji` (`code`, `name`) VALUES (NULL, '防御班'), (NULL, '进攻班'), ('200991', '智谋班')




点赞(0)

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部