如果记录不存在,我需要向表中插入一条记录,如果表中存在该记录,则需要更新一条记录。
当然,我可以写:
p码:
SELECT * FROM table1 WHERE id='abc' by JDBC
if(exists)
UPDATE table1 SET ... WHERE id='abc' by JDBC;
else
INSERT INTO table1... by JDBC;
但是,我认为代码并不优雅。
另外,我也可以这样写:
p码:
int row = Statement.executeUpdate("INSERT INTO table1...", 2);
if(row==0)
update table1 SET ... WHERE id='abc' by JDBC;
您认为后一种方法更好,更快吗?谢谢!
编辑:在MYSQL
最佳答案
这取决于您使用的数据库类型以及是否可以利用特定于数据库的功能。例如,MySQL使您可以执行以下操作:
INSERT INTO territories (code, territory) VALUES ('NO', 'Norway')
ON DUPLICATE KEY UPDATE territory = 'Norway'
但是,以上内容不符合标准(SQL-92)。也就是说,它很可能无法在所有数据库上运行。换句话说,您必须坚持编写代码的方式。它看起来可能不那么优雅,但是它可能是最安全的解决方案。
关于java - JDBC插入或更新实践,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6252997/