我有一个前端 PHP 应用程序,它将数据保存在 MySQL 数据库中。该updated_by
值将发生变化,因为它将是正在更新记录的用户。仅当我们为任何其他列 ( , ) 插入新值并且插入或更新记录时
,我才想更新该列。updated_by
sname
scol2
欢迎任何帮助,非常感谢:)
表信息:
- 表:
test
- 唯一索引:列
sname
和scol2
- 列:
sname
,scol2
,updated_at
,updated_by
- 值: name1、col2、03-02-2013、phpuser1
MySQL 5.6 信息:
INSERT INTO.. ON DUPLICATE KEY UPDATE:
“..如果将行作为新行插入,则返回 1,如果更新现有行,则返回 2...”
示例:用户将更新或插入记录:
INSERT INTO test(sname) VALUES("name1") ON DUPLICATE KEY UPDATE sname="name1", scol2="col2";
结果: 上面的查询不会更新任何东西。完美的。
INSERT INTO test(sname) VALUES("name1") ON DUPLICATE KEY UPDATE sname="name1", scol2="col22";
结果:上述查询将更新列:scol2
和updated_at
.Perfect。
如何在一个查询中自动更新 updated_by 列?
INSERT INTO test(sname) VALUES("test1") ON DUPLICATE KEY UPDATE sname="name1", scol2="col2", updated_by="phpuser2222";
这不起作用,它会在每次列updated_by
和可能的解决方案时更新两个查询:updated_at
- 插入记录:
INSERT ... ON DUPLICATE KEY UPDATE...
- 在我的 PHP 应用程序中获取返回值以了解它是否已[更新或插入],然后
updated_by
使用第二个查询更新该字段:INSERT INTO test(updated_by) VALUES("phpuser2222");