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

MySQL 触发器 存储过程 一点小用

      同事离职,又一个一个烂摊子要收拾。这里修修,那里补补都没有精力来写点东西。
      明天回家,上午整理好文档。下午决定抽点时间,把最近的东西尽量理一理。很多灵感都已经遗忘。我们总在不断面对,所以我们不断遗忘。【syslog、mysql优化、触发器、存储过程、文件读写……】疯狂的Google着这些关键词,以求在对项目整体改动最小、影响最小情况下完成这些工作。
      过程很痛苦,今天这篇算是痛定思痛吧!
      在技术可行的情况下,优雅的设计永远很重要,否则就不断痛苦吧。(思考,成熟的思考一定在行动之前)
      言归正传:触发器、存储过程可以理解一些预先编写好的函数,存储在数据库服务器上。触发器关联到具体表,对一张数据表进行插入、更新、删除这三类操作前、操作后都可以做一些事情,比如:删除某张表一条记录后,可以同时删除一张相关表中的对应记录。而这些工作都会由数据库自动完成。
      一个例子:
 DELIMITER ;;
TRIGGER `targetTest` AFTER INSERT ON `tbl_1` FOR EACH ROW BEGIN
if not exists (select id from tbl_2 where name=NEW.name) then
INSERT INTO tbl_2 (`name`,`record`) VALUES (NEW.name,'1');
else
UPDATE tbl_2 SET record=record+1 WHERE name=NEW.name;
end if;
END */;;
DELIMITER ;
 说明:上面例子实现功能,向表tbl_1中插入一条数据之后,判断tbl_2中有没有此记录,如果没有插入一条新的记录到tbl_2,如果有对应name则更新一下tbl_2的record字段。(触发器语法解释可以Google其他资料)
       存储过程,一段编写好的SQL语句可以封装成函数,直接调用:
       一个例子:
DELIMITER $$
CREATE DEFINER=`xxx`@`localhost` PROCEDURE `pro_test`(e_table varchar(1000),e_filename varchar(1000),e_condition varchar(1000))
begin
SET @sql = CONCAT('select * into outfile "',e_filename, '" from ',e_table);
IF e_condition IS NOT NULL AND e_condition <> '' THEN
SET @sql = CONCAT(@sql,' where ',e_condition);
END IF;
PREPARE record from @sql;
EXECUTE record;
DEALLOCATE PR


相关文档:

mysql 导入数据 LOAD DATA LOCAL INFILE

你可以创建一个文本文件“pet.txt”,每行包含一个记录,用定位符(tab)把值分开,并且以CREATE TABLE语句中列出的列次序给出。对于丢失的值(例如未知的性别,或仍然活着的动物的死亡日期),你可以使用NULL值。为了在你的文本文件中表示这些内容,
使用\N(反斜线,字母N)。例如,Whistler鸟的记录应为(这里值之 ......

23本mysql电子书


mastering Phpmyadmin

Beginning Php And Mysql程序设计

Beginning PHP and MySQL from Novice to Professional 3rd Edition

Head First PHP MySQL

MySQL入门经典

MySQL Stored Procedure Pr ......

windows 7 下安装apache php 和mysql的一些问题。

在windows下安装amp网上的介绍很多了。
我这里只说些关键的部分,一方面作为笔记,另一方面和大家共享。
1.安装apache
   a.这里要注意,在刚开始填写主机域名时,如果你没有域名,就在本地安装,那就填写本机ip行了。(我觉得填写127.0.0.1更好,具体我没试过)
   b.apache 的默认端口是80,我的 ......

15.2.6.5. InnoDB和MySQL复制


15.2.6.5. InnoDB和MySQL复制
MySQL复制就像对MyISAM表一样,也对InnoDB表起作用。以某种方式使用复制也是可能的,在这种方式中从服务器上表的类型不同于主服务器上原始表的类型。例如,你可以复制修改到主服务器上一个InnoDB表,到从服务器上一个MyISAM表里。
要为一个主服务器建立一个新服务器,你不得不复制In ......

mysql Access Denied无法访问的问题

mysql 明明已经装好了,但是无法访问。链接的时候 总是说
Access Denied.
解决方法:
用mysqld --skip-grant-table启动mysql
然后在mysql库中执行这个
INSERT INTO user VALUES ('localhost', 'root', PASSWORD('some_pass'), 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y', 'Y', ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号