【问题标题】:Database value insertion Error数据库值插入错误
【发布时间】:2013-07-28 10:53:40
【问题描述】:

如果不存在,我如何手动插入值...我尝试了以下代码,但它产生错误。如果表中不存在,我如何插入值

 String sql1 = "CREATE TABLE IF NOT EXISTS admin " +
                    "(id INTEGER not NULL AUTO_INCREMENT, " +
                    " user_name VARCHAR(255), " + 
                    " password VARCHAR(255), " + 
                    " isAdmin BOOLEAN NOT NULL DEFAULT '0', " + 
                    " memo VARCHAR(255), " + 
                    " PRIMARY KEY ( id ))"; 
            stmt.executeUpdate(sql1);

            String insert="INSERT INTO admin IF NOT EXISTS(id,user_name,password,isAdmin,memo)VALUES(1,'admin','admin',1,'memo')";
            stmt.executeUpdate(insert);

它会产生类似的错误

 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS(id,user_name,password,isAdmin,memo)VALUES(1,'admin','admin',1,'mem' at line 1
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

【问题讨论】:

    标签: java jquery mysql database


    【解决方案1】:
     String insert="INSERT INTO admin IF NOT EXISTS(id,user_name,password,isAdmin,memo)VALUES(1,'admin','admin',1,'memo')";
    

    应该是

     String insert="INSERT IGNORE INTO admin (id,user_name,password,isAdmin,memo)VALUES(1,'admin','admin',1,'memo')";
    

    【讨论】:

      【解决方案2】:

      MySQL(以及任何其他 SQL 实现)在 INSERT 查询中不支持 IF NOT EXISTS

      您的INSERT 查询必须是

      "INSERT IGNORE INTO admin (id,user_name,password,isAdmin,memo) VALUES (1,'admin','admin',1,'memo')"
      

      【讨论】:

        【解决方案3】:

        您想要的可能是INSERT ... ON DUPLICATE KEY UPDATEINSERT IGNORE...

        如果检测到重复插入,前者将更新现有行,而后者将丢弃重复插入。

        在这两种情况下,您都必须在要检查重复项的列上创建一个 UNIQUE 约束。如果违反了 UNIQUE,则调用备用函数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-08-17
          • 2016-12-25
          • 2013-06-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多