唯一索引新增更新
DuplicateInsert Param DTS
ts
/**
* 表参数配置
*/
export interface TableConfig {
/**
* 表名
*/
name: string
/**
* 表别名
*/
alias?: string
}
export type TABLE_TYPE = string | TableConfig
/**
* 数据变更基础参数
*/
export interface BaseChangeParam {
/**
* 表名
*/
t: TABLE_TYPE
}
/**
* 插入唯一约束更新
*/
export interface DuplicateInsertParam extends BaseChangeParam {
/**
* 配置参数
*/
params: IAnyObject | IAnyObject[]
/**
* 唯一索引字段名
*/
unique?: string
/**
* 不更新字段
*/
excludeField?: string | string[]
}
Example
注意事项
插入数据前确保数据表结构已经存在。否者执行会抛出 '[table name]' doesn't exist
异常。并且确保表存在唯一索引约束否则会导致重复数据插入
单条数据插入
ts
import emysql from '@dpapejs/emysql'
// 数据库实例化
const mysql = new emysql({
password: '[db登录密码]',
user: '[db登录用户名]',
database: '访问数据库名称'
})
mysql.change
.duplicateInsert({
t: 't_user',
params: {
name: '张三',
age: 15,
sex: 1,
create_at: new Date(),
unionid: 'a'
},
unique: 'unionid',
excludeField: ['id', 'create_at']
})
.then((result) => {
// 插入数据成功 当 unionid 存在更新相关数据, 不存在则新增一条新增数据
})
.catch((err) => {
// 插入数据失败
console.error('[ERROR]::', err)
})
多条数据插入
ts
import emysql from '@dpapejs/emysql'
// 数据库实例化
const mysql = new emysql({
password: '[db登录密码]',
user: '[db登录用户名]',
database: '访问数据库名称'
})
mysql.change
.duplicateInsert({
t: 't_user',
params: [
{
name: '张三',
age: 15,
sex: 1,
create_at: new Date(),
unionid: 'a'
},
{
name: '李四',
age: 18,
sex: 0,
create_at: new Date(),
unionid: 'b'
},
{
name: '王五',
age: 14,
sex: 1,
create_at: new Date(),
unionid: 'c'
}
],
unique: 'unionid',
excludeField: ['id', 'create_at']
})
.then((result) => {
// 插入数据成功 当 unionid 存在更新相关数据, 不存在则新增一条新增数据
})
.catch((err) => {
// 插入数据失败
console.error('[ERROR]::', err)
})