插入VS(选择并插入)

时间:2011-03-29 11:14:09

标签: insert

我正在编写一个简单的程序来将行插入表中。但是当我开始编写程序时,我有一个疑问。在我的程序中,我会多次得到重复输入。那个时候我必须通知用户这已经存在了。

以下哪种方法可用于实现此目的

  1. 直接执行Insert语句将获得主键冲突错误,如果它是重复通知,否则将插入。一个要执行的查询

  2. 首先搜索主键值。如果找到值提示用户。否则执行插入操作。对于非重复行,此方法需要2个查询。

  3. 请让我知道这些方法之间的权衡。哪一个最好遵循?

    此致 晴天。

1 个答案:

答案 0 :(得分:0)

我会选择第二种方法。

第一个会导致抛出异常,这已经非常昂贵......

第二种方法将使用非常快的SELECT count(*) FROM mytable WHERE key = userinputINSERT语句,您可以使用相同的数据库连接对象(假设为OO;))。

使用预准备语句会预先优化查询,我认为这将使第二种方法比第一种方法更好,更灵活。

编辑:根据您的DBMS,您还可以使用if not exists子句

EDIT2:我认为无论出现什么问题,Java都会抛出SQLExcpetion,即使用第一种方法,您无法在重复条目或不可用数据库之间区分,而无需解析错误消息 - 这也是使用SELECT + INSERT(或if not exists

的要点