gpt4 book ai didi

MYSQL使用多个主键的重复键语法

转载 作者:行者123 更新时间:2023-11-30 23:05:18 24 4
gpt4 key购买 nike

大家好,这是我的第一篇文章,请多多包涵。

我已经搜索了这些问题,虽然它们接近答案,但我所看到的并不正确。

环境信息:

  • MySQL 服务器版本:5.1.69-community-log MySQL 社区服务器 (GPL)
  • 内核版本:CentOS release 5.10 (Final)

我正在做一个项目来跟踪包更新中的文件版本。此数据当前存储在以下格式的文本文件中。

文件名版本

示例(不,这些不是我们的文件,只是我随机想到的东西)

explorer 1.1.2.254spoon 1.0.0.8

我正在使用 awk 脚本创建 mysql 脚本以插入下表:

CREATE TABLE `TBL_Versions` (  `File` varchar(50) NOT NULL,  `Version` varchar(10) NOT NULL UNIQUE KEY,  `LastUpdate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  PRIMARY KEY (`File`,`Version`));

目前我正在使用以下插入格式:

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);

这使我的表中有以下数据:

+----------+-----------+---------------------+| File     | Version   | LastUpdate          |+----------+-----------+---------------------+| explorer | 1.1.2.254 | 2014-03-04 08:40:08 || spoon    | 1.0.0.8   | 2014-03-04 08:40:23 |+----------+-----------+---------------------+

稍后版本文件可能会更新为 spoon 的版本是 1.0.0.10,但是 explorer 的版本不会改变。所以在文件中它看起来像这样:

explorer 1.1.2.254spoon 1.0.0.10

有没有办法让 awk 脚本编写插入以允许它更改 spoon 而不是 explorer?如果需要或可能需要的任何其他内容,我愿意更改表格。你更有经验的头脑可能已经看到我遇到的问题,但我会列出我需要发生的事情。

1. I want the line for explorer to remain unchanged.2. I want the Version and LastUpdate for spoon to change.

提前感谢社区中的每一个人的帮助。非常感谢。

最佳答案

对于您当前的表架构,文件和版本的组合唯一标识一条记录...如果只有文件是主键并且您从版本中删除了唯一键属性,您可以尝试将 REPLACE 替换为 TBL ..插入到 TBl 中。

mysql> REPLACE INTO TBL_Versions (File,Version,LastUpdate) values("explorer", "1.1.2.256", CURRENT_TIMESTAMP);

这可以是一个更简单的查询..前提是..PRIMARY KEY 约束仅在文件列上..

关于MYSQL使用多个主键的重复键语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22174787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com