使用唯一列

时间:2017-08-21 21:53:25

标签: mysql

我有一个包含3列的表,id(主键)和两个唯一的Key列column_1_id和column_2_id。

column_1_id(引用用户的ID)可以在数据库中多次存在,但每次必须有不同的column_2_id。

下图有效。

+----+-------------+-------------+
| ID | column_1_ID | column_2_ID |
+----+-------------+-------------+
|  1 |           1 |          2  |
|  2 |           1 |          4  |
+----+-------------+-------------+

下图无效。

+----+-------------+-------------+
| ID | column_1_ID | column_2_ID |
+----+-------------+-------------+
|  1 |           1 |          2  |
|  2 |           1 |          2  |
+----+-------------+-------------+

我需要使用2或4更新column_2_ID的行。如果用户(由column_1_ID引用)的行为column_2_ID = 2,行为column_2_ID = 4.应删除column_2_ID = 4的行,并且column_2_ID = 2的行已更新为column_2_ID = 3。

但是,如果用户的行为column_ID_2 = 2,则row_ID_2 = 4的行和column_ID_2 = 3的行。应删除column_ID_2 = 2且column_ID_2 = 4的行。

最终目标是不存在column_2_ID等于2或4的行。

因此,例如,目前下面的图表可以并且确实存在。

+----+-------------+-------------+
| ID | column_1_ID | column_2_ID |
+----+-------------+-------------+
|  1 |           1 |          2  |
|  2 |           1 |          3  |
|  3 |           1 |          4  |
+----+-------------+-------------+

+----+-------------+-------------+
| ID | column_1_ID | column_2_ID |
+----+-------------+-------------+
|  1 |           1 |          2  |
|  2 |           1 |          4  |
+----+-------------+-------------+

上述两个例子都应该产生如下:

+----+-------------+-------------+
| ID | column_1_ID | column_2_ID |
+----+-------------+-------------+
|  1 |           1 |          3  |
+----+-------------+-------------+

无法创建新表,必须维护ID主键。

以下是我尝试过的一些示例,其中包括:

UPDATE table
SET column_2_id=3
WHERE column_2_id IN (2,4)

然而它返回:

  

重复录入' 2-3'为了key' integrity_idx'。

我尝试了各种解决方案,但没有人提出我需要的解决方案。必须维护主键(id) - 创建新表是不可能的。

0 个答案:

没有答案