mysql动态添加唯一约束

时间:2015-07-14 22:32:31

标签: mysql

我有一个MySQL表,它有五个位置列(洛杉矶,纽约等),其列值为邻域,代码指的是位置(LA,NY等),以及userID 。代码和用户ID始终存在 - 并且至少有一个位置列具有值。

理想情况下,我想将此表格规范化 - 但作为短期解决方案,我想添加一个约束条件:

"确保用户ID,代码和位置的唯一组合。"

例如:

row1 :拥有userID = 1,代码= NY,纽约=布鲁克林,洛杉矶=唐人街
row2 :有userID = 1,代码= NY,纽约=西区,洛杉矶=唐人街

应允许插入第二行,因为纽约社区不同。

我尝试过常规约束:

ALTER TABLE位置ADD UNIQUE locationuser_idcodenew_york);
ALTER TABLE位置ADD UNIQUE locationuser_idcodelos_angeles);

但是第二行没有插入,因为上面的第二个约束会阻止它。

如果没有对表进行规范化,那么创建此约束的最佳选择是什么?

1 个答案:

答案 0 :(得分:-1)

创建一个包含城市的表格 id | city
 1 |纽约
 2 |洛杉矶
.. | ..
并修改表格位置,在此表格中添加外键并设置主键(id,code,city)

id | code | city
1 | 345 | 1< - 这是纽约 1 | 123 | 1
.. | .. | ..