删除语句
一般项目都有两种删除方式,一种是物理删除,一种是逻辑删除。
物理删除就是用 delete 语句,把记录从数据库里面删掉。
逻辑删除,就是做一个标记字段,删除的时候只是改一下标记字段,而不是用 delete 把记录删掉。
逻辑删除有两个好处:
- 误删除后,便于找回数据。
- 便于保证数据的完整性。
物理删除
delete from table where id = 111
逻辑删除
update table set isDel = 1 where id = 111
封装
还是老规矩,用 meta 和 id 拼接 SQL。
物理删除
/**
* 实现删除数据的功能。物理删除,delete from
* @param { MySQLHelp } help 访问数据库的实例
* @param { Object } meta 表、字段
* @param { number|string } id 主键字段值
* @param { connection } cn 如果使用事务的话,需要传递开启事务时创建的连接对象
* @returns 添加记录的ID
* * meta 结构:
* * * tableName: '', 表名
* * * idKey: 'id', 主键字段名称
*/
export default function deleteData (help, meta, id, cn = null) {
// 提交SQL语句
const myPromise = new Promise((resolve, reject) => {
const sql = `DELETE FROM ${meta.tableName} WHERE ${meta.idKey}=?`
help.query(sql, [id], cn)
.then((res) => {
// 成功了,返回给调用者
resolve(res.rowsAffected)
})
.catch((err) => {
reject(err)
})
})
return myPromise
}
逻辑删除
/**
* 实现删除数据的功能。逻辑删除,update set flag = 1
* @param { MySQLHelp } help 访问数据库的实例
* @param { Object } meta 表、字段
* @param { number|string } id 主键字段值
* @param { connection } cn 如果使用事务的话,需要传递开启事务时创建的连接对象
* @returns 添加记录的ID
* * meta 结构:
* * * tableName: '', 表名
* * * idKey: 'id', 主键字段名称
* * * delFlag: 'isDel', 逻辑删除,标记字段名称
*/
export default function deleteData (help, meta, id, cn = null) {
const myPromise = new Promise((resolve, reject) => {
const sql = `UPDATE ${meta.tableName} SET ${meta.delFlag} = 1 WHERE ${meta.idKey}=?`
help.query(sql, [id], cn)
.then((res) => {
// 成功了,返回给调用者
resolve(res.rowsAffected)
})
.catch((err) => {
reject(err)
})
})
return myPromise
}
使用方式
和前面的使用方式是一样的。
import {
deleteModel,
deleteFlag
} from '../../packages/websql.js'
const meta = {
tableName: 't_test1',
idKey: 'id',
delFlag: 'c1'
}
const model = {
c1: '666',
c2: 'bb2'
}
deleteModel(help, meta, newId).then((res) => {
console.log('删除完成,影响行数:', res)
})
deleteFlag(help, meta, 3).then((res) => {
console.log('删除完成,影响行数:', res)
})
等等,前端好像不需要这么麻烦吧。。。


网友评论