具有唯一服务器和多个端口的MySQL表

时间:2015-06-27 01:43:17

标签: mysql sql database syntax

我正在创建一个主服务器列表。所以基本上,当我的一台服务器上线时,它会被发布到主服务器列表。

每个服务器显然都有一个唯一的IP地址,但每个IP地址可以有多个服务器(如果同一IP上的服务器使用不同的tcp端口和udp端口)。

因此该表有3列: ip(TEXT),tcp_port(INT),udp_port(INT)

例如:

  • 45.29.10.11使用TCP端口500和UDP端口600托管服务器。
  • 45.29.10.11使用TCP端口501和UDP端口601托管另一台服务器。
  • 45.29.10.11托管另一台使用TCP端口502和UDP端口602的服务器。

等等。如何使主服务器可以将多个服务器添加到具有相同IP的列表中,但它们必须具有不同的端口,tcp_port不存在于任何其他行中,并且udp_port也不存在于任何其他行中。

我只需要将这些列添加:ip,tcp_port,udp_port到unique_index,应该是吗?

正确的表创建和插入语法是什么?

1 个答案:

答案 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);

这两个约束应该做你想要的,