我的数据库中有两个日期时间列:
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数据库的INSERTED列上应该做哪些更改?我必须根据需要使用REPLACE sql或任何同义词。
答案 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