目前我们有一个datagrid(php)来存储一些已部署代码的代码和版本号,但是我在使用哪种数据类型来存储版本号时遇到了一些问题。
我正在考虑创建名为major,minor和revision的3个字段(tinyint),但是这会给我一些关于datagrid的问题,因为我们希望用户只插入完整版本号
前:
Insert version : 1.10.1
而不是那样:
Insert major : 1
Insert minor : 10
Insert rev. : 1
那么,我应该用什么数据类型来存储版本?或者,最好创建一个过程将版本的输入分成3个字段?
编辑:我需要拆分值的主要原因是因为在每次部署到生产之前我需要通过最新版本查询代码。
答案 0 :(得分:1)
将每个部分存储在它自己的列中作为(微小的)整数:
version
-------
major
minor
patch
build
这样可以在调用时轻松排序和连接。
如果其他表将引用复合键,则可以使用复合键或创建代理键。
答案 1 :(得分:0)
答案 2 :(得分:0)
我能够通过使用这个简单的解决方案来解决这个问题:
添加以下字段:
major
minor
创建两个触发器:
插入:
CREATE DEFINER=`root`@`%` TRIGGER `insert`
BEFORE INSERT ON `version_test`
FOR EACH ROW
BEGIN
set new.major = SUBSTRING_INDEX(new.code_version,'.',1),
new.minor = SUBSTRING_INDEX(new.code_version,'.',-1);
END
更新
CREATE DEFINER=`root`@`%` TRIGGER `update`
BEFORE UPDATE ON `version_test`
FOR EACH ROW
BEGIN
SET new.major=SUBSTRING_INDEX(new.code_version,'.',1),
new.minor=SUBSTRING_INDEX(new.code_version,'.',-1);
END
我真的希望这有助于某人。