【问题标题】:SQL Check if table exists then Create Table & Insert into same querySQL 检查表是否存在然后创建表并插入到同一个查询中
【发布时间】:2018-10-15 03:01:33
【问题描述】:

试过这段代码,但它给出了“ER_PARSE_ERROR

错误描述:“sqlMessage”:“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在 'Insert values ('Bitcoin ')' 在第 1 行"

var query = "CREATE TABLE IF NOT EXISTS projects (project_name VARCHAR(10)) Insert values ('" + projectName + "')";

我想在项目表中插入一个新项目,如果表不存在则创建表并插入记录,我可以为此工作编写多个查询并检查响应是否成功,然后继续下一个查询,但我是寻找一个能够完成所有工作的查询,该查询本身连接多个查询。

注意:我在 Nodejs 中使用 mysql 模块

这个过程应该一个接一个地同步工作,当用户向路由'/add_project'发送一个post请求,数据在body "project_name":"project1"中,然后服务器将记录插入mysql表projects但是如果那是第一条记录,它会生成错误“没有这样的表”。 我希望它首先通过创建表(如果不存在)然后插入记录来同步工作。

编辑:为@Nick 建议添加了屏幕截图

【问题讨论】:

  • 您是否有多线程设置,即您是否希望应用程序中的多个线程可以执行CREATE TABLEINSERT 语句?
  • 不,我只希望程序一个接一个地同步工作,当用户向路由“/add_project”发送一个发布请求时,主体“project_name”:“project1”中的数据然后服务器在 mysql 表项目中插入记录,但如果这是第一条记录,它会生成错误“没有这样的表”。我希望它首先通过创建表(如果不存在)然后插入记录来同步工作

标签: mysql


【解决方案1】:

您可以使用CREATE TABLE ... SELECT 语法:

var query = "CREATE TABLE IF NOT EXISTS projects (project_name VARCHAR(10)) SELECT '" + projectName + "' AS project_name";

Demo on rextester

【讨论】:

  • 我想在创建表后在表中插入一条记录,当表中已经有一些记录时选择工作。
  • 这个查询不是从表中选择记录,它只是选择字符串projectName。看看我的演示,你会看到它从一个不存在的表开始(因为我做的第一件事是DROP 表。
  • @nilanshbansal 抱歉搞砸了我的演示。它现在又开始工作了。
  • 感谢您的回答。
【解决方案2】:

工作代码但我需要得到不那么复杂的代码而没有太多的错误处理:

app.post('/add_project_to_database',function(req,res){
var projectName = req.body.project_name;

//CHECK IF PROJECT EXISTS
var query = "Select project_name from projects where project_name = '" + projectName + "'";
return res.send('Project Already Exists!');

//INSERTING PROJECT
// var query = "CREATE TABLE IF NOT EXISTS projects (project_name VARCHAR(10)) Insert values ('" + projectName + "')";
var query = "Insert into projects(project_name) values ('" + projectName + "')";

con.query(query, function(err, result){
    if(err){
        var query_create = "CREATE TABLE IF NOT EXISTS projects (project_name VARCHAR(10))";
        con.query(query_create,function(error,res_create){
            if(error){
                console.log(error);
                res.send(error);
            }
            else{
                console.log("TABlE CREATED");
                con.query(query,function(error_insert,response){
                    if(error_insert){
                        console.log(error_insert);
                        res.send(error_insert);
                    }
                    else{
                        console.log("RECORD INSERTED SUCCESSFULLY !");
                    }
                });
            }
        });
    }else{
        res.send("Successfully Inserted Project");
    }
});
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    相关资源
    最近更新 更多