MySqL触发器以及常用转换函数注意事项

1,触发器(http://www.cnblogs.com/zzwlovegfj/archive/2012/07/04/2576989.html)

      1.MYSQL中触发器中不能对本表进行 insert ,update ,delete 操作,以免递归循环触发

      2. 对于update 只能用set 进行操作,insert与delete只能借助第二张表才能实现需要的目的

      3.借助连接查询语句试试看,实现思路,先将要符合删除条件的记录查询出来,作为一个新的集合(相当于一张中间表),在通过集合与当前表的 inner                                    join  语句 进行删除。

   http://blog.sina.com.cn/s/blog_6810dfc20101j2pj.html

  例如

DROP trigger IF EXISTS tg_wmy;
delimiter $//定义结束执行SQL语句的标识符以不至于一次换行执行一次
create trigger tg_wmy
after insert on Wmy
for each row
begin
BEGIN
declare name varchar(10);
declare score varchar(50);
set name=NEXTVAL('wmy');
set score= concat('S_',right(concat('00000000',1234),8));//职工号标识(0000011)
Insert into Wmy values(new.name,score);
END;
end
$//结束执行SQL
INSERT INTO Wmy VALUES ('1',100);

以上语句报错

::    INSERT INTO Wmy VALUES ('',);    Error Code: . Can't update table 'Wmy' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.    0.219 sec

解决

DROP trigger IF EXISTS tg_wmy;
delimiter $
create trigger tg_wmy
before insert on Wmy
for each row
begin
BEGIN
declare name varchar();
declare score varchar();
set name=NEXTVAL('wmy');
set score= concat('S_',right(concat('',),));
set new.name=name;
set new.score=score;
END;
end
$
INSERT INTO Wmy VALUES ('',);

mysql类型转换函数convert与cast的用法

MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。

两者具体的语法如下:
CAST(value as type);
CONVERT(value, type);
就是CAST(xxx AS 类型), CONVERT(xxx,类型)。

可以转换的类型是有限制的。这个类型可以是以下值其中的一个:

二进制,同带binary前缀的效果 : BINARY    
字符型,可带参数 : CHAR()     
日期 : DATE     
时间: TIME     
日期时间型 : DATETIME     
浮点数 : DECIMAL      
整数 : SIGNED     
无符号整数 : UNSIGNED

例子:CONVERT('23',SIGNED),CAST('125e342.83' AS signed)

MYSQL 获取当前日期及日期格式

获取系统日期:NOW()

格式化日期:DATE_FORMAT(date, format)注: date:时间字段 ,format:日期格式

http://blog.csdn.net/kangbrother/article/details/7030304

MySQL 字符串连接函数Concat

concat(str1,str2);

http://zac110.iteye.com/blog/1582382

上一篇:php操作Mysql 以及封装常用的函数 用外连接连接3个表的案例


下一篇:js 实现各种排序