我正在为我的 Java 应用程序使用摆动菜单。我也有 MySQL 数据库。数据库中的一个表中有一个列(名为 brind),它必须具有唯一值(除了自动插入值的 ID 列)。因此,通过我的 JFrame 表单上的文本字段,我将尝试在该表中插入一些值,但前提是该 brind 值不存在于表中(即列中)。我只需要一个 mysql 查询,称之为条件插入。我该怎么做呢?谢谢
问问题
157 次
3 回答
1
像下面这样的查询应该可以满足您的要求:
INSERT INTO `thetable`
SELECT 'values', 'to', 'insert'
WHERE NOT EXISTS (
SELECT *
FROM `thetable`
WHERE brind='whatever'
)
Wherevalues,to,insert
应替换为您要插入的字段的值。
但是,这里的其他一些建议会更好地为您服务,例如
- 首先检查该值,如果存在则不要插入(在一个事务中执行此操作以处理并发问题,假设您的事务隔离设置正确),
- 尝试插入并处理唯一约束冲突失败。
在我看来,选项 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 回答