【发布时间】:2015-07-11 04:55:24
【问题描述】:
大家好,这是我的第一篇文章,请见谅。
我已经在 SO 中搜索了这些问题,虽然它们接近答案,但我所看到的并不正确。
环境信息:
- MySQL 服务器版本:5.1.69-community-log MySQL 社区服务器 (GPL)
- 内核版本:CentOS 5.10 版(最终版)
我正在做一个项目来跟踪包更新中的文件版本。此数据当前以下列格式存储在文本文件中。
文件名版本
示例(不,这些不是我们的文件,只是我想到的随机东西)
资源管理器 1.1.2.254 勺子 1.0.0.8我正在使用 awk 脚本创建 mysql 脚本以插入下表:
创建表`TBL_Versions`( `File` varchar(50) NOT NULL, `Version` varchar(10) NOT NULL 唯一键, `LastUpdate` 时间戳 NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 主键(`文件`,`版本`) );目前我正在使用以下插入格式:
INSERT INTO TBL_Versions (File,Version,LastUpdate) values("explorer", "1.1.2.254", CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE Version=VALUES(Version);
INSERT INTO TBL_Versions (File,Version,LastUpdate) values("spoon", "1.0.0.8", CURRENT_TIMESTAMP) ON DUPLICATE KEY UPDATE Version=VALUES(Version);
这会在我的表格中留下以下数据:
+----------+------------+----------+ |文件 |版本 |最后更新 | +----------+------------+----------+ |探险家 | 1.1.2.254 | 2014-03-04 08:40:08 | |勺子| 高分辨率照片| CLIPARTO 1.0.0.8 | 2014-03-04 08:40:23 | +----------+------------+----------+稍后版本文件可能会更新,说勺子的版本是 1.0.0.10,但资源管理器的版本不会改变。所以在文件中它看起来像这样:
资源管理器 1.1.2.254 勺子 1.0.0.10有没有办法让 awk 脚本编写插入以允许它改变勺子而不是资源管理器?如果需要或其他任何可能需要的东西,我愿意更换桌子。您更有经验的头脑可能已经看到了我遇到的问题,但我会列出我需要解决的问题。
1. 我希望 explorer 的线路保持不变。 2. 我希望勺子的 Version 和 LastUpdate 改变。提前感谢社区中的每个人的帮助。非常感谢。
【问题讨论】:
-
您的密钥是文件、版本。因此,在 DUPLICATE 上,您的文件和版本与您要插入的完全一样。那么更新版本应该没有意义吧?
-
您的密钥是文件和版本的组合......或者只有在文件和版本的组合重复时,重复密钥才有效......只有一个不会成功。跨度>
标签: mysql sql-server awk