gpt4 book ai didi

MySQL 4.1 到 5.1 复制 : "ON DUPLICATE KEY UPDATE" and "ON UPDATE CURRENT_TIMESTAMP" not working

转载 作者:行者123 更新时间:2023-11-29 03:43:49 25 4
gpt4 key购买 nike

我有一个 MySQL 4.1 master 和 MySQL 5.1 slave 的问题。 binlog格式为STATEMENT(4.1唯一支持的格式)。

问题是触发器(“ON DUPLICATE KEY UPDATE”和“ON UPDATE CURRENT_TIMESTAMP”)没有在从站上复制。

假设我有这张表:

CREATE TABLE Table1 (
PK INT NOT NULL AUTO_INCREMENT,
Col1 VARCHAR(30) NOT NULL
Stamp TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (PK)
);

案例 1: 使用此语句:

INSERT INTO Table1 (PK, Col1) 
VALUES (1, 'Value1')
ON DUPLICATE KEY UPDATE Col1 = VALUES(Col1)

如果 PK = 1 的行已经存在,则该语句的行为类似于 INSERT IGNORE...(不插入任何内容)。

情况 2: 如果我运行

UPDATE Table1 
SET Col1 = 'Value2'
WHERE PK = 1

然后 PKCol1 被更新,但 Stamp 没有。

我希望有人有一些见识,因为我在 Internet 上没有找到任何东西。

谢谢。

最佳答案

啊,我明白了。您的 Stamp 列未更新的原因是您将 Col1 的值设置为它已经存在的值。如果 UPDATE 语句中没有值实际更改,则 Stamp 字段将不会更新。

例如,如果您将 Col1 的值更新为“Value2”,而之前它是“Value1”,那么 Stamp 字段 得到更新。

如果您想确保它始终更新,无论是否实际更改了任何值,那么您应该将 UPDATE 查询更改为:

UPDATE Table1 
SET Col1 = 'Value1', Stamp = CURRENT_TIMESTAMP
WHERE PK = 1

关于MySQL 4.1 到 5.1 复制 : "ON DUPLICATE KEY UPDATE" and "ON UPDATE CURRENT_TIMESTAMP" not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9570383/

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