我正在创建一个主服务器列表。所以基本上,当我的一台服务器上线时,它会被发布到主服务器列表。
每个服务器显然都有一个唯一的IP地址,但每个IP地址可以有多个服务器(如果同一IP上的服务器使用不同的tcp端口和udp端口)。
因此该表有3列: ip(TEXT),tcp_port(INT),udp_port(INT)
例如:
等等。如何使主服务器可以将多个服务器添加到具有相同IP的列表中,但它们必须具有不同的端口,tcp_port不存在于任何其他行中,并且udp_port也不存在于任何其他行中。
我只需要将这些列添加:ip,tcp_port,udp_port到unique_index,应该是吗?
正确的表创建和插入语法是什么?
答案 0 :(得分:1)
MySQL忽略NULL
的唯一约束/索引。所以,你可以添加:
create unique index idx_master_ip_tcp on master(ip, tcp_port);
create unique index idx_master_ip_udp on master(ip, udp_port);
这两个约束应该做你想要的,