基于node.js的express使用mysql语句在插入数据时防重插入

2021/10/6 19:44:15

本文主要是介绍基于node.js的express使用mysql语句在插入数据时防重插入,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

基于node.js的express使用mysql语句在插入数据时防重插入

1.在使用MySQL进行插入数据的时候,使用以下语句能够避免重复数据进行插入,即过滤相同的数据

例如:
某数据库某表的字段如下:

	CREATE TABLE IF NOT EXISTS BooksInfo(
	BooksInfoId VARCHAR(20),/*primaryKey,需为图书id*/
	title VARCHAR(50) NOT NULL,/*图书姓名*/
	num INT UNSIGNED NOT NULL,/*图书总数目*/
	pos VARCHAR(50) NOT NULL,/*图书位置*/
	PRIMARY KEY (BooksInfoId)
)

那么,进行防重插入的SQL语句如下:

INSERT INTO BooksInfo(BooksInfoId,title,num,pos) 
SELECT 'a115','数据结构与算法',500,'c区'
FROM DUAL
WHERE NOT EXISTS
(
	SELECT BooksInfoId,title,num,pos
	FROM BooksInfo
	WHERE BooksInfoId='a115' AND title='数据结构与算法' AND num=500 AND pos='c区'
);

2.在使用基于node.js的express框架进行设计时,进行如下定义即可保证防重插入

在base.js中:

var mysql = require('mysql')

class Base {
    constructor() {
        this.CONNECT;
    }

    CreateConnect() {
        this.CONNECT = mysql.createConnection({
            host: 'localhost',
            port: '3306',
            user: 'root',
            password: '0610',
            database: 'libraryManagementSystem'
        })
    }
}


module.exports = { Base }

在bookData.js中:

const Base = require('./Base')

const addData =
    "INSERT INTO BooksInfo(BooksInfoId,title,num,pos) SELECT ?,?,?,? FROM DUAL WHERE NOT EXISTS(SELECT BooksInfoId,title,num,pos FROM BooksInfo WHERE BooksInfoId=? AND title=? AND num=? AND pos=?);"

class Books extends Base.Base {
    constructor() {
        super()
    }

	//增添数据
    addData(message, callback) {
        this.CreateConnect()
        let CONNECT = this.CONNECT
        CONNECT.connect()
        CONNECT.query(addData,
            [message.BooksInfoId, message.title, message.num, message.pos, message.BooksInfoId, message.title, message.num, message.pos],
            (err, result) => {
                if (err) {
                    console.log('[ADD ERROR]:', err.message);
                    callback(-1);
                    CONNECT.end();
                    return;
                }
                callback(0);
                CONNECT.end();
            })
    }
}


module.exports = { Books }

TIPS:在const addData中,字符串类型的变量‘?'无需用引号进行包括,否则会报错。



这篇关于基于node.js的express使用mysql语句在插入数据时防重插入的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程