我的数据库中有两个日期时间列:inserted和updated
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数据库中插入的列应该做什么更改?我必须使用REPLACE sql或任何同义词来满足我的需要。
发布于 2018-11-20 20:58:05
replace将删除旧记录并插入新记录。
如果要更新现有记录,请改用update:
UPDATE TABLE1
SET name = 'test2',
updated = now()
where id = 1发布于 2018-11-20 21:01:29
如果您希望在不使用写入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
https://stackoverflow.com/questions/53393454
复制相似问题