0
我有一个表,其名称是address_book。如何在布尔值上创建唯一约束2列?
我已经域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,一个是发票一是发货地址。
我如何使用独特的索引,我想验证这种情况。
我不确定你可以,因为数据不是唯一的...你想要一个约束,以确保'default_address' +'address_type'是唯一**只有**当默认地址标志== 1而INDEX不会为你做到这一点。我想你需要通过存储过程(或者在应用程序级别)通过INSERT评估它。或者你需要重新设计你的数据库结构。 – CD001