mysql触发器感觉比较使用,比如添加A表就要同时添加B表,或者删除A表的同时也要删除B表
?
触发器还设计到old和new的使用:
?
DELIMITER // CREATE TRIGGER `mytrigger2` AFTER INSERT ON `t_user` FOR EACH ROW BEGIN INSERT INTO t_card(id,card_name,card_num)VALUES(new.id,new.name,new.pwd); END//
?
注意:其中的DELIMITER // 其实跟触发器没关系的,他的意思说 当sql遇到一个“//”时就表示结束
?
上面的t_user中的这条数据是新添加的,所以用new
?
DELIMITER// CREATE TRIGGER `mytrigger3` BEFORE DELETE ON `t_user` FOR EACH ROW BEGIN DELETE FROM t_card WHERE id=old.id; END//
?
?
二、存储过程procedure:
?
DELIMITER// CREATE PROCEDURE `myprocedure1`(IN id INT,IN NAME VARCHAR(20),IN pwd VARCHAR(20),OUT num LONG) BEGIN INSERT INTO t_user(id,NAME,pwd)VALUES(id,NAME,pwd); SELECT COUNT(*) INTO num FROM t_card; END//
?
存储过程主要涉及到传入参数和返回参数,使用in 和 out 标识
返回参数用 select into 这种写法
?
在数据库中调用procedure ,感觉没什么意义
CALL myprocedure1(4,'jack','henan',@num);
SELECT @num;
?
?
?
?
?
?