我的数据库中有两个日期时间列: 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或任何同义词来满足我的需要。
2条答案
按热度按时间jmo0nnb31#
replace
删除旧记录并插入新记录。如果要更新现有记录,请使用
update
取而代之的是:6ovsh4lw2#
如果要在不使用write-in-sql命令的情况下更新字段。您需要创建如下列:
但这一个适用于更新操作,而不是替换操作。
replace的工作方式与insert完全相同,只是如果表中的旧行与主键或唯一索引的新行具有相同的值,则在插入新行之前会删除旧行。参见第13.2.6节“插入语法”。
详细说明见:https://dev.mysql.com/doc/refman/8.0/en/replace.html