mysql-停止更新默认的当前时间戳列

jecbmhm3  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(342)

我的数据库中有两个日期时间列: inserted 以及 updated ```
inserted timestamp DEFAULT CURRENT_TIMESTAMP
updated timestamp -------------------------

主列为id。
我运行sql命令:

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

这是确定的:插入列get current time在第一次插入更新列时也设置为current time,因为它是在replace命令中设置的。
若我运行第二个命令来更新名称,那个么更新的列将被正确地更新,而且 `INSERTED` 列也会更新。我不想那样!!!

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

如何停止 `inserted` 列是否在运行replace命令后自动更新?在mysql数据库中插入的列应该做什么更改?我必须使用replace sql或任何同义词来满足我的需要。
jmo0nnb3

jmo0nnb31#

replace 删除旧记录并插入新记录。
如果要更新现有记录,请使用 update 取而代之的是:

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

6ovsh4lw2#

如果要在不使用write-in-sql命令的情况下更新字段。您需要创建如下列:

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

但这一个适用于更新操作,而不是替换操作。
replace的工作方式与insert完全相同,只是如果表中的旧行与主键或唯一索引的新行具有相同的值,则在插入新行之前会删除旧行。参见第13.2.6节“插入语法”。
详细说明见:https://dev.mysql.com/doc/refman/8.0/en/replace.html

相关问题