我正在用PHP while循环构建一个小报告。
我在while()循环中运行的查询是这样的:
INSERT IGNORE INTO `tbl_reporting` SET datesubmitted = '2015-05-26', submissiontype = 'email', outcome = 0, totalcount = totalcount+1
我希望每次运行查询时
totalcount
列都会增加。但是数字保持为1。
UNIQUE索引由前三列组成。
这是表模式:
CREATE TABLE `tbl_reporting` (
`datesubmitted` date NOT NULL,
`submissiontype` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL,
`outcome` tinyint(1) unsigned NOT NULL DEFAULT '0',
`totalcount` mediumint(5) unsigned NOT NULL DEFAULT '0',
UNIQUE KEY `datesubmitted` (`datesubmitted`,`submissiontype`,`outcome`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
当我将查询修改为常规的
UPDATE
语句时:UPDATE `tbl_reporting` SET totalcount = totalcount+1 WHERE datesubmitted = '2015-05-26' AND submissiontype = 'email' AND outcome = 1
...有用。
INSERT IGNORE
不允许加数字吗?还是我的原始查询格式错误?我想使用INSERT IGNORE,否则我将不得不先查询原始记录,然后插入,然后最终更新。
最佳答案
想想你在做什么:
INSERT .... totalcount=totalcount+1
要计算
totalcount+1
,数据库必须检索尚不存在的totalcount
...的当前值,因为您正在创建新记录,并且没有现有数据可检索“旧”值从。例如您要在去商店购买食材之前先尝试吃蛋糕,更不用说将它们混合/烘烤了。
关于php - MySQL INSERT IGNORE向非索引列添加1,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31754435/