【发布时间】:2016-12-28 00:41:27
【问题描述】:
我有 2 张桌子 cidr 和 ip。
在第一个中,我存储 CIDR 网络掩码。 (2列表,id_cidr,cidr),这里是一个例子(值是虚构的):
id_cidr | cidr
---------+----------------
1 | 14.44.182.0/24
---------+----------------
2 | 26.232.49.0/22
在第二个中,我想将 ip 存储在每个 cidr 网络掩码中(3 列表,id_ip,cidr_id,ip),这是一个示例(值是虚构的):
id_ip | cidr_id | ip
---------+--------------------------
1 | 1 | 14.44.182.0
---------+--------------------------
2 | 1 | 14.44.182.1
---------+--------------------------
3 | 1 | 14.44.182.2
---------+--------------------------
... | 1 | ...
---------+--------------------------
256 | 1 | 14.44.182.255
---------+--------------------------
257 | 2 | 26.232.48.0
---------+--------------------------
258 | 2 | 26.232.48.1
---------+--------------------------
259 | 2 | 26.232.48.2
---------+--------------------------
... | 2 | ...
---------+--------------------------
1280 | 2 | 26.232.51.255
我想要实现的是:每当我将 cidr 网络掩码添加到 cidr table 时,我希望我的 ip table 使用该 cidr 网络掩码内的所有 IP 范围自动填充字段。有没有办法在mysql中实现这一点?
注意:要将 cidr 网络掩码转换为 ip 的范围点击here
【问题讨论】:
-
在这个
ip series = 26.232.49.0/22下生成的第一个ip地址是26.232.48.0。是预期的吗?并告诉我们您更喜欢调用一个过程来填充第二个表吗? -
你是对的,我犯了一个错误,我更正了。是的,我猜除了 PHP 之外的一些程序或任何其他解决方案。所以从 mysql 开始,我问这个是因为我对高级 mysql 没有经验。
-
你想要什么听起来你想要触发它。但是不鼓励在触发器内调用过程。但如果我是你,那么我会这样做:1)插入
cidr表2)获取最后一个插入id 3)调用提供最后插入的cidr id和cidr本身的过程以便插入ip表