我有一个记录票证的表,这些票证由表示“数据库”的列分隔。我在database
andcid
列上有一个唯一键,以便它唯一地递增每个数据库(cid
具有AUTO_INCREMENT
完成此操作的属性)。我手动递增id
,因为我不能制作两AUTO_INCREMENT
列(我宁愿AUTO_INCREMENT
处理更复杂的唯一性任务)。
这使我的数据基本上看起来像这样:
-----------------------------
| id | cid | database |
-----------------------------
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 2 | 2 |
-----------------------------
这工作得很好。
我正在尝试制作一个允许将票“移动”到另一个数据库的功能;用户可能经常在错误的数据库中输入票证。不必关闭票证并完全创建一个新票证(复制/粘贴所有数据),我当然想让用户更容易。
我希望能够唯一地更改database
和cid
字段,而不必篡改id
字段。我想做一个UPDATE
(或类似的),因为其他表上有外键约束链接到该id
字段;这就是为什么我不简单地做 a REPLACE
or DELETE
then INSERT
,因为我不希望它删除所有其他表数据然后必须重新创建它(日志条目、事务、约会等)。
如何获得下一个唯一AUTO_INCREMENT
值(基于新database
值),然后使用它来更新所需的行?
例如,在上面的数据集中,我想将第一条记录更改为“数据库#2”。无论我进行什么查询,都需要将数据更改为此:
-----------------------------
| id | cid | database |
-----------------------------
| 1 | 3 | 2 |
| 2 | 1 | 2 |
| 3 | 2 | 2 |
-----------------------------
我不确定是否AUTO_INCREMENT
需要增加,因为我的理解是唯一键使它只是动态计算下一个适当的值。