易截截图软件、单文件、免安装、纯绿色、仅160KB

MySQL触发器解决方案历程

最近,项目中用到mysql,由于数据量非常大,每天的数据量在百万级,考虑到mysql数据库处理性能以及数据属性,决定保存足够多的查询数据即可,距当前时间最久远的数据直接删除,无需进行备份。
头脑中冒出的第一个想法就是,能否利用mysql中的触发器,检查数据表大小,如果超过预设长度,则删除部分数据。
CREATE TRIGGER tg AFTER INSERT ON traffic_info
FOR EACH ROW BEGIN
...
DELETE from traffic_info WHERE time <= "..."
...
END;
执行后出现如下错误:
ERROR 1442 (HY000): Can't update table 'traffic_info' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
原来,目前MySQL触发器还不支持删除触发器所在的表的数据,ok,我原始的想法是每个数据表自己管理表大小,现在看来是行不通了。
第二个想法是干脆用存储过程得了,手动调用存储过程来更新所有表的大小,考虑到数据表很多,想协议个接受数据表名为参数的存储过程:
CREATE PROCEDURE P(IN table_name VARCHAR(50), IN max_count INT)
READS SQL DATA
BEGIN
...
SELECT COUNT(1) from table_name
...
END;
这种做法行不通,mysql会将“table_name”字符串作为表名,搜索后发现,需要用到mysql新特性prepare,不过需要注意的是,就算是利用prepare,还是无法直接传入数据表名,需要利用CONCAT事先连接查询字符串:
CREATE PROCEDURE P(IN table_name VARCHAR(50), IN max_count INT)
READS SQL DATA
BEGIN
...
SET @query_str = CONCAT("SELECT COUNT(1) from ", table_name);
PREPARE stmt from @query_str
EXECUTE stmt;
...
END;
总算是送了一口气,可是又发现,我需要在存储过程中动态获取PREPARE查询的返回结果,但是,目前mysql还无法做到这一点,真是让人失望,看来只能另觅它途了……
时间仓促,今是为记


相关文档:

unixODBC安装(mysql Ubuntu)


unixODBC安装
      这几天真是郁闷死了,基本每天都在编译安装QT和unixODBC,无奈总会出现些莫名其妙的错误。首先,我承认我Linux玩地不熟,但这些开源软件产商之间的兼容性也太差了吧。所以还是制定个标准比较好,大家都遵守一个约定。从这个意义来说,微软的垄断,还是有一定的好处的。
   ......

MyEclipse+Tomcat+MySQL的环境搭建(2010年3月5日)

一. 设置步骤:1、右键点击我的电脑,选择属性(见图-1)      
1、点击高级,在对话框的下部点击环境变量
 3、在系统变量对话框中,点击新建进行设置.
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.6.0_05(在此使用的是默认安装路径)
系统变量->编辑->变 ......

MySql常用命令

1. 数据库
切换数据库:  use mydb
2. 事件
 查看事件:   show events
 启动调度器:  set global event_scheduer = 1;
 查看是否启动: show variables like 'event_scheduler';
3. 备份
在administator中的backup中无法备份数据库的事件。需要手动将创建事件的脚本添加到sql备 ......

MySQL导入/导出.sql文件


导出.sql文件
1.将数据库transfer_server_db导出到transfSRV.sql文件中:
    mysqldump -u root -p transfer_server_db > /home/eric/transfSRV.sql
2.将数据库transfer_server_db中的device_info_table导出到table.sql文件中:
    mysqldump -u root -p transfer_server_db devi ......

一种不错的从SQL转Mysql数据库的方法

年初的时候一直在做一个网站MSSQL2000->MySQL5的迁移工作,因为采用了不同的程序系统,所以主要问题在数据的迁移。由于2个系统数据库结构差异非常大,不方便采取SQLSERVER里导入MYSQL的ODBC数据源的功能(也不推荐这么做,字段类型等不同点会搞死人的~),因此就在WINDOWS下自己写PHP脚本从SQLSERVER里读数据,然后按照 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号