gpt4 book ai didi

MySQL。为什么我不能只更新一列?

转载 作者:行者123 更新时间:2023-11-29 09:37:08 26 4
gpt4 key购买 nike

我有 table :

CREATE TABLE `cold_water_volume_value` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parameter_value_id` int(11) NOT NULL,
`time` timestamp(4) NOT NULL DEFAULT CURRENT_TIMESTAMP(4) ON UPDATE CURRENT_TIMESTAMP(4),
`value` double NOT NULL,
`device_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_cold_water_volume_value_id_device_time` (`parameter_value_id`,`device_id`,`time`),
KEY `idx_cold_water_volume_value_id_time` (`parameter_value_id`,`time`),
KEY `fk_cold_water_volume_value_device_id_idx` (`device_id`),
CONSTRAINT `fk_cold_water_volume_value_device_id` FOREIGN KEY (`device_id`) REFERENCES `device` (`id`) ON UPDATE SET NULL,
CONSTRAINT `fk_cold_water_volume_value_id` FOREIGN KEY (`parameter_value_id`) REFERENCES `cold_water_volume_parameter` (`id`) ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=684740 DEFAULT CHARSET=utf8;

所有行都有device_id = NULL。我想通过脚本更新它:

UPDATE cold_water_volume_value SET device_id = 130101 WHERE parameter_value_id = 2120101;

但是,它不会将所选 parameter_value_id 的所有 device_id 从 null 替换为给定值,而是设置 timevalue 的所有内容 列到 now () 和一些(看起来与之前的值完全随机的)数字。

为什么会发生这种情况,以及如何正确地做到这一点?

最佳答案

时间会根据您的架构自动更新。

`time` timestamp(4) NOT NULL DEFAULT CURRENT_TIMESTAMP(4) ON UPDATE CURRENT_TIMESTAMP(4)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

要解决这个问题,您可以在更新中将时间设置为自身。

UPDATE cold_water_volume_value
SET device_id = 130101, time = time
WHERE parameter_value_id = 2120101;

但这可能会跟踪上次更新行的时间。如果是这样,它就按预期工作了,让它继续做它的事情。

至于value,它可能有一个更新触发器。检查显示触发器并查找该表上的触发器。

关于MySQL。为什么我不能只更新一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57350321/

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