我有一个查询,我在INSEL上执行唯一但重复更新。
现在我想计算更改/更新行的次数。这可以在同一个查询中执行吗?
$query = "INSERT INTO table(
column1,
column2)
VALUES(
value1,
value2)
ON DUPLICATE KEY UPDATE
column1 = VALUES(column1),
column2 = VALUES(column2),
column3 = column3+1"; //SOMETHING LIKE THIS?
更新 实际上这似乎是按原样运作的!
答案 0 :(得分:0)
我的目标是创建一个新的表日志,每次插入/更新查询时都要添加一行。 要查看结果,只需在日志表中使用COUNT函数。
答案 1 :(得分:0)
好的,按照要求,
如果您的架构具有任何类型的唯一键(例如主键或任何其他唯一键,复合或非复合键),那么Insert On Duplicate Key Update
又称IODKU
将起作用,因为我看到它
要测试的一个简单案例是将1插入column3,或者在Update触发的情况下,将column3递增。
可以看到IODKU
的一个示例here紧跟我认为你正在做的事情,但它有一个独特的复合键,用于该绅士的问题。
请注意,如果没有会创建唯一键冲突的唯一键,IODKU
将无效。正是这种冲突导致IODKU
的更新部分成功。意思是,如果没有这样一个唯一的密钥,你只需要添加另一行。
我之所以这么说,是因为很多人在模式中没有这样的密钥的情况下尝试它,然后想知道为什么另一行违背他们的意愿。
Insert on Duplicate Key Update上的Mysql手册页。