mysql数据表:
create table driver_order (
id int(11) unsigned NOT NULL AUTO_INCREMENT,
primary key (id)
);
创建触发器:
DELIMITER $$
CREATE TRIGGER seq_driver_order_number BEFORE INSERT ON driver_order
FOR each ROW
BEGIN
DECLARE seq_type INT(10);
SET seq_type = getUserNo(NEW.create_user);
SET NEW.order_number = getNextCommSequence("motor", seq_type);
END$$
DELIMITER ;
以下是mybatis操作触发器的配置方法:
insert id="insertOrder" parameterType="DriverOrder"
selectKey keyProperty="id,orderNumber" keyColumn="ID,ORDER_NUMBER" order="AFTER" resultType="java.util.Map"
SELECT ID,ORDER_NUMBER FROM DRIVER_ORDER where ID = last_insert_id()
/selectKey
INSERT INTO
DRIVER_ORDER(ID,ORDER_NUMBER,AREA_START,AREA_END,CREATE_USER,CREATE_TIME)
VALUES
(#{id},
#{orderNumber,jdbcType=VARCHAR},
#{areaStart,jdbcType=VARCHAR},
#{areaEnd,jdbcType=VARCHAR},
#{createUser,jdbcType=VARCHAR},
now())
/insert
如果公司里有上百个表要做触发器,如果手动写代码的话.很累,一个小程序,自动生成mysql的触发代码.
php
$dbname = 'test';//数据库
$tab1 = 'user'; //执行的表
$conn = mysql_connect("localhost","root", "root",$dbname) or
die("请检查你的主机名数据库用户名和密码");
mysql_select_db($dbname, $conn) or die("数据库还没有连接");
$query = mysql_query("SHOW COLUMNS FROM $tab1");mysql_query("");
while($row=mysql_fetch_array($query,MYSQL_NUM)){//得到表的字段数组
$temp[] = $row[0];
$str1 .= '+'.$row[0].'+,';
}
//insert触发器
$inser_str = "h1{$tab1}表的insert触发器/h1";
$inser_str .= "create trigger ".$tab1."_insert brAFTER INSERT
bron ".$tab1."br";
//update触发器
$update_str = "h1{$tab1}表的update触发器/h1";
$update_str .= "create trigger ".$tab1."_updatebr";
$update_str .= "after updatebr";
$update_str .= "on ".$tab1.'br';
$update_str .= "for each rowbr";
new.id;//这里的where id = new.id要手动改一下.改成主键的字段名";
//delete触发器
$delete_str = "h1{$tab1}表的delete触发器/h1";
$delete_str .= "create trigger ".$tab1."_deletebr";
$delete_str .= "after deletebr";
$delete_str .= "on ".$tab1."br";
$delete_str .= "for each row br";
new.id要手动改一下.改成主键的字段名br";
echo $inser_str;
echo $update_str;
echo $delete_str;
echo
更好的保证数据ID的对应,如果用before
href=""华夏之星/a';
echo EOT
create trigger 触发器名称br
{ before | after}br
{insert | update | delete}br
on 表名br
for each rowbr
触发器SQL语句br
参数详解如下:br
create trigger 触发器名称:创建一个新触发器,并指定触发器的名称.br
{ before | after}:用于指定在insert、update或delete语句执行前触发还是在语句执行后触发.br
on 表名:用于指定响应该触发器的表名.br
for each row:触发器的执行间隔,for each row
通知触发器每隔一行执行一次动作,而不是对整个表执行一次.br
触发器SQL语句:触发器要执行的SQL语句,如果该触发器要执行多条SQL语句,要将多条语句放在begin...end块中.
br如:begin...end块(它不能上phpadmin上运行.因为phpmyadmin没有对begin...end解析.)br
mysql_query("br
create trigger user_deletebr
after deletebr
on userbr
for each row BEGINbr
delete from user_bak where id=OLD.id;br
delete from aaa where id=OLD.id;br
END;");br
brbrbrbr
EOT;
--触发器如果存在则删除重新创建
DROP?TRIGGER?IF?EXISTS?触发器名称;
CREATE?TRIGGER?触发器名称?
AFTER?INSERT?ON?表名称
FOR?EACH?ROW
--这里写你触发器触发时要做的
UPDATE?lsxhd?
SET?ywrq=UNIX_TIMESTAMP(FROM_UNIXTIME(rq,?"%Y-%m-%d"))
WHERE
END;
主要的就是数据的截取吧,在家判断就可以了
CREATE TRIGGER trigger1
AFTER insert ON AAA
FOR EACH ROW
insert INTO BBB
(a, b, c, d)
values substr
('this\is\a\test', 1, instr('this\is\a\test', '\', 1, 1) - 1),
substr
('this\is\a\test',
(substr('this\is\a\test',
instr('this\is\a\test', '\', -1, 1) -
substr(NEW :aa, instr(NEW :aa, '\', -1, 1) + 1, length(NEW :aa)));
delimiter //
create trigger upd_a
after insert on table_b
for each row
begin
if
new.收费单号 like 'Y%'
then
update table_a set table_a.编号 =1 where table_a.操作员id = new.收费员id and table_a.编号 1 ;
end if;
end//
delimiter ;
以上就是土嘎嘎小编为大家整理的mysql的触发器怎么写相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!