我正在PHP while循环中构建一个小报告。我在while()循环中运行的查询如下:
INSERT IGNORE INTO `tbl_reporting` SET datesubmitted = '2015-05-26', submissiontype = 'email', outcome = 0, totalcount = totalcount+1
我希望每次运行查询时,totalcount
列都会增加。但这个数字保持在1。唯一索引由前3列组成。
下面是表模式:
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,最后进行更新。
想想你在做什么:
INSERT .... totalcount=totalcount+1
要计算totalcount 1
,DB必须检索totalcount
的当前值。。。它还不存在,因为您正在创建一个新记录,并且没有可从中检索“旧”值的现有数据。
e、 你在去商店买原料之前就已经试着吃蛋糕了,更不用说混合/烘焙了。