0

我正在为我的 Java 应用程序使用摆动菜单。我也有 MySQL 数据库。数据库中的一个表中有一个列(名为 brind),它必须具有唯一值(除了自动插入值的 ID 列)。因此,通过我的 JFrame 表单上的文本字段,我将尝试在该表中插入一些值,但前提是该 brind 值不存在于表中(即列中)。我只需要一个 mysql 查询,称之为条件插入。我该怎么做呢?谢谢

4

3 回答 3

1

像下面这样的查询应该可以满足您的要求:

INSERT INTO `thetable`
    SELECT 'values', 'to', 'insert' 
    WHERE NOT EXISTS (
        SELECT * 
        FROM `thetable`
        WHERE brind='whatever'
    )

Wherevalues,to,insert应替换为您要插入的字段的值。

但是,这里的其他一些建议会更好地为您服务,例如

  1. 首先检查该值,如果存在则不要插入(在一个事务中执行此操作以处理并发问题,假设您的事务隔离设置正确),
  2. 尝试插入并处理唯一约束冲突失败。

在我看来,选项 2 是一个不错的选择。

于 2013-08-08T18:02:46.337 回答
0
REPLACE INTO myTable
SET brind = 'someValue'

我认为你有一个数据库设计问题。如果列 brid 必须是唯一的,它可能应该用作主键。

于 2013-08-08T17:59:33.660 回答
0

将尝试在该表中插入一些值,但前提是该表中不存在该 brind 值(即列中)

这可以在数据库级别和应用程序级别完成。

由于数据库级别是最简单、最安全的。在该列上创建索引并使其唯一(而不是标识符!),如果该值已经存在,数据库将不会插入。是如何做到的。

应用程序级别:您将缓存具有数据库的内容并锁定表,不允许其他应用程序修改它。如果需要,插入它并解锁表。

我建议第一个解决方案

于 2013-08-08T18:00:40.187 回答