ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2021-10-06 09:34:57  阅读:230  来源: 互联网

标签:node BooksInfoId title pos 插入 num CONNECT mysql message


基于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,BooksInfoId,title,pos,插入,num,CONNECT,mysql,message
来源: https://blog.csdn.net/qq135595696/article/details/120621234

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有