MySQL-停止更新DEFAULT CURRENT TIMESTAMP栏

时间:2018-11-20 12:54:29

标签: mysql replace timestamp default

我的数据库中有两个日期时间列: insertedupdated

inserted timestamp DEFAULT CURRENT_TIMESTAMP 
updated   timestamp -------------------------

主列是ID。

我运行SQL命令:

REPLACE INTO TABLE1 (id,name,updated) VALUES ('1','test1',NOW()) 

这没关系: 插入的列在第一次插入时获取当前时间 更新的列也设置为当前时间,因为它是在REPLACE命令中设置的。

如果我运行第二条命令来更新名称,则更新的列将被正确更新,而且INSERTED列也将被更新。我不要那个!!!

REPLACE INTO TABLE1 (id,name,updated) VALUES ('1','test2',NOW()) 

一旦运行REPLACE命令,如何停止inserted列自动更新?在mysql数据库的INSERTED列上应该做哪些更改?我必须根据需要使用REPLACE sql或任何同义词。

2 个答案:

答案 0 :(得分:1)

replace删除旧记录,然后插入新记录。

如果要更新现有记录,请使用update

UPDATE TABLE1 
SET name = 'test2',
    updated = now()
where id = 1

答案 1 :(得分:1)

如果要在不使用写入SQL命令的情况下更新字段。您需要像这样创建该列:

`inserted` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

但此方法适用于Update操作而不是Replace操作。

  

REPLACE的工作原理与INSERT完全相同,不同之处在于,如果表中的旧行与PRIMARY KEY或UNIQUE索引的新行具有相同的值,则在插入新行之前删除该旧行。请参见第13.2.6节“ INSERT语法”。

此处的详细说明,请参见:https://dev.mysql.com/doc/refman/8.0/en/replace.html