0
我有一些触发器将通话记录作为blob保存到数据库中。我想添加一些额外的功能,每次触发时都会执行,并有助于将数据库保留在一定的大小限制内:功能必须执行以下操作:while循环只使用mysql查询语言
必须计算blob文件的总和。当它大于给定值时,从表中删除最早的记录。
我不知道我在做什么错。请看一看
WHILE ((select sum(OCTET_LENGTH(recordfile))/1000000 from callrecords)>0,1)
DO
BEGIN
DELETE FROM callrecords ORDER BY id ASC LIMIT 1;
END;
END WHILE;
下面是数据库看起来像事先
-- ----------------------------
-- Table structure for `callrecords`
-- ----------------------------
CREATE TABLE `callrecords` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`uid` varchar(150) COLLATE utf8_unicode_ci NOT NULL,
`callerid` int(11) NOT NULL,
`extension` int(11) NOT NULL,
`calldate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`recordfile` longblob,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=350 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
THX。
那么,什么happpens?你的触发器是否运行?它是否删除记录?你有错误吗?什么是错误? – Jocelyn 2013-03-13 16:48:35