如果不存在,我如何手动插入值...我尝试了以下代码,但它产生错误。如果表中不存在,我可以插入值
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)
答案 0 :(得分: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')";
答案 1 :(得分:0)
MySQL(以及任何其他SQL实现)不支持IF NOT EXISTS
查询中的INSERT
。
您的INSERT
查询必须
"INSERT IGNORE INTO admin (id,user_name,password,isAdmin,memo) VALUES (1,'admin','admin',1,'memo')"
答案 2 :(得分:0)
您想要的可能是INSERT ... ON DUPLICATE KEY UPDATE或INSERT IGNORE...。
如果检测到重复插入,前者将更新现有行,而后者将丢弃重复插入。
在这两种情况下,您都必须在要检查重复项的列上创建UNIQUE约束。如果违反了UNIQUE,则调用alternate函数。