And*_*man 4 mysql sql innodb auto-increment
我的问题与为什么MySQL自动增量在失败的插入上增加一样?,但id我不想增加我的字段,我宁愿只重写INSERT导致我麻烦的查询.假设我有一个包含两个字段的数据库,id并且username,哪里id是主键并且username是唯一键.我基本上是在寻找能够做到的语法INSERT...IF NOT EXISTS.现在,我做到了
INSERT INTO `table`(`username`)
VALUES ('foo')
ON DUPLICATE KEY UPDATE `id`=`id`
Run Code Online (Sandbox Code Playgroud)
我只有一个线程写入数据库,所以我不需要任何类型的并发保护.建议?
你应该用这个:
INSERT INTO tableX (username)
SELECT 'foo' AS username
FROM dual
WHERE NOT EXISTS
( SELECT *
FROM tableX
WHERE username = 'foo'
) ;
Run Code Online (Sandbox Code Playgroud)
如果要包含更多列的值:
INSERT INTO tableX (username, dateColumn)
SELECT 'foo' --- the aliases are not needed
, NOW() --- actually
FROM dual
WHERE NOT EXISTS
( SELECT *
FROM tableX
WHERE username = 'foo'
) ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4918 次 |
| 最近记录: |