简体   繁体   English

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

[英]How can I create a unique constraint 2 columns on Boolean Values?

I have a table which name is address_book. 我有一个表,名称为address_book。

I have fields id, user_id, ...... , default_address, address_type 我有字段id,user_id,......,default_address,address_type

address_type is boolean (0: Delivery Address - 1 : Invoice Address) default_address is boolean (0: Not Default Address - 1 : Default Address) address_type为布尔值(0:交货地址-1:发票地址)default_address为boolean(0:非默认地址-1:默认地址)

Think that a company has 8 address. 认为一家公司有8个地址。 Five addresses are for delivery, Three adresses are for invoice. 五个地址用于交货,三个地址用于发票。

But in same time Only one default value depends on address_type. 但同时,只有一个默认值取决于address_type。 One default address for delivery one default address for invoice. 一个默认的交货地址,一个默认的发票地址。

If i query this statement 如果我查询此语句

alter table address_book add unique index(default_address, address_type)

it won't be logical. 这是不合逻辑的。

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     |

In this concept every user can maximum 2 default_address one is invoice one is delivery address. 在这种概念下,每个用户最多可以使用2个default_address,一个是发票,一个是交货地址。

How can i use unique index for that i want a validation for this situation. 我该如何使用唯一索引来验证这种情况。

How about adding two new tables, one for default invoice address and one for default delivery. 如何添加两个新表,一个用于默认发票地址,另一个用于默认传递。 Then you constraints on those two tables will just be address.id and user.id. 然后,您对这两个表的约束将只是address.id和user.id。 With the primary key being both fields. 主键是两个字段。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM