如何在布尔值上创建2列唯一约束?

时间:2013-10-01 14:02:15

标签: php mysql indexing unique-constraint

我有一个名为address_book的表。

我有字段id,user_id,......,default_address,address_type

address_type是布尔值(0:交货地址 - 1:发票地址) default_address是布尔值(0:非默认地址 - 1:默认地址)

认为公司有8个地址。五个地址用于发货,三个地址用于发票。

但同时只有一个默认值取决于address_type。一个默认地址,用于交付发票的一个默认地址。

如果我查询此陈述

alter table address_book add unique index(default_address, address_type)

这不符合逻辑。

id | user_id | default_address | address_type|
.. |   ..    |                 |             |
.. |   ..    |                 |             |
.. |   ..    |                 |             |
----------------------------------------------
12 |   10    |       1         |       1     |
----------------------------------------------
13 |   10    |       0         |       1     |
----------------------------------------------
14 |   10    |       0         |       1     |
----------------------------------------------
15 |   10    |       1         |       0     |
----------------------------------------------
16 |   10    |       0         |       0     |
----------------------------------------------
17 |   10    |       0         |       0     |

在这个概念中,每个用户最多可以有2个default_address,一个是发票1,是送货地址。

我如何使用唯一索引,我希望验证这种情况。

1 个答案:

答案 0 :(得分:0)

如何添加两个新表,一个用于默认发票地址,另一个用于默认传递。那么你对这两个表的约束就是address.id和user.id.主键是两个字段。