事务
Exec Transaction DTS
提示
查询语句及数据变更语句类型描述具体详情请参考各详情文档描述
ts
/**
* 执行事务函数
*/
export type ExecTransactionFunction = (v: TransactionParams) => Promise<any>
export interface TransactionChange {
/**
* 执行数据插入语句
*
* Execute the data insert statement
*/
insert(v: InsertParam): Promise<ExecChangeResult>
/**
* 唯一索引数据插入更新,存在更新数据不存在新增数据
*
* The unique index data was inserted and updated. The updated data existed. No new data existed
*/
duplicateInsert(v: DuplicateInsertParam): Promise<ExecChangeResult>
/**
* 执行数据删除语句
*
* Execute a data delete statement
*/
delete(v: DeleteParam): Promise<ExecChangeResult>
/**
* 执行数据更新语句
*
* Execute the data update statement
*/
update(v: UpdateParam): Promise<ExecChangeResult>
}
export interface TransactionParams {
/**
* 执行查询语句
*
* Execute query statement
* @param v 配置参数信息
* @returns
*/
query(v: QueryOption): Promise<IAnyObject[]>
/**
* 执行查询数据详情语句
*
* Execute the statement to query data details
* @param v 参数信息
*/
detail(v: QueryOption): Promise<IAnyObject | undefined>
/**
* 获取数据总数
* @param v 参数信息
*/
count(v: QueryCountOption): Promise<number>
/**
* 数据更新函数
*/
change: TransactionChange
}
Example
ts
// 数据库实例化
const mysql = new emysql({
password: '[db登录密码]',
user: '[db登录用户名]',
database: '访问数据库名称'
})
// t_user 数据
const user = [
{ name: 'name1', age: 20, id: 1 },
{ name: 'name2', age: 21, id: 2 },
{ name: 'name3', age: 30, id: 3 },
{ name: 'name4', age: 31, id: 4 },
{ name: 'name5', age: 18, id: 5 }
]
// 更新失败回滚
await mysql.transaction(async (v) => {
try {
await v.change.update({
t: 't_user',
condition: { id: 1 },
params: { name: 'name1_update', age: 22 }
})
throw Error('STOP UPDATE')
} catch (error) {
return Promise.reject(error)
}
})