MySQL Table 具有唯一服务器和多个端口
MySQL Table with Unique Servers and multiple ports
我正在创建主服务器列表。所以基本上只要我的一台服务器上线,它就会发布到主服务器列表中。
显然每个服务器都有一个唯一的 IP 地址,但是每个 IP 地址可以有多个服务器(如果同一 IP 上的服务器使用不同的 tcp 端口和 udp 端口)。
所以 table 有 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 就可以了吗?
正确的 table 创建和插入语法是什么?
MySQL 忽略 NULL
以获得独特的 constraint/index。所以,您只需添加:
create unique index idx_master_ip_tcp on master(ip, tcp_port);
create unique index idx_master_ip_udp on master(ip, udp_port);
这两个约束应该做你想做的,
我正在创建主服务器列表。所以基本上只要我的一台服务器上线,它就会发布到主服务器列表中。
显然每个服务器都有一个唯一的 IP 地址,但是每个 IP 地址可以有多个服务器(如果同一 IP 上的服务器使用不同的 tcp 端口和 udp 端口)。
所以 table 有 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 就可以了吗?
正确的 table 创建和插入语法是什么?
MySQL 忽略 NULL
以获得独特的 constraint/index。所以,您只需添加:
create unique index idx_master_ip_tcp on master(ip, tcp_port);
create unique index idx_master_ip_udp on master(ip, udp_port);
这两个约束应该做你想做的,