我有2个表 cidr
和 ip
.
在第一个我存储CIDR网络掩码 . (2列表,id_cidr,cidr),这是一个例子(值是虚构的):
id_cidr | cidr
---------+----------------
1 | 14.44.182.0/24
---------+----------------
2 | 26.232.49.0/22
在第二个我想在每个cidr网络掩码(3列表,id_ip,cidr_id,ip)中存储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 table
中添加一个cidr网络掩码时,我希望我的 ip table
自动填充该cidr网络掩码中所有ip范围的字段 . 有没有办法在mysql中实现这一点?
注意:要将cidr网络掩码转换为ip的范围,请单击here
1 回答
Procedure:
上面的过程将
cidr
id作为参数 .然后它通过给定的id从
cidr
表中检索记录 .稍后它会将此cidr下的所有ips插入到
ip
表中 .Test:
这将在此ip系列
14.44.182.0/24
下的ip
表中插入256个条目Test Schema & Data: