触发器
delimiter $$(设置$$为语句结束符)
例:
delimiter $$
create trigger jiaobanfei after update on user1
for each row
begin
update user2 set age=age+(old.num-new.num);
update user2 set num=num+1;
end
$$
delimiter;
old.age-new.age
删除;drop trigger jiaobanfei;
update user1 set num=num-4 where id=1;
注意;1、触发器不能同名
2、目前mysql只支持一类事件设置一个触发器
在触发器内,获得触发改触发程序时的数据:
利用触发程序内的new和old来完成
old:旧的数据,在时间发生之前的数据
new:监听表上,事件发生之后的数据
事件是insert,不能使用old
事件是delete,不能使用new
如果一个触发程序,由多条sql语句组成:
应该;1、语句组成语句块(begin,end)来标识语句块
2、语句快的语句需要独立的语句结束符,分号
命令行:由于触发器程序内使用分号作为语句结束符,那么当命令行客户
端碰到分号时,就应该理解成触发器程序内子语句结束,而不是整个创建触发器的语句结束
应该通过修改命令行的语句结束符达到目的,
Delimiter语句可以完成设置语句结束符
测试 :insert into on duplicate key update (如果插入的数据时,主键重复,则为修改操作)
replalce
php操作mysql的客户端有三个
msyql,mysqli,pdo
测试函数是否可用
var_dump(function_exists('mysql_connect'));
常见的:show,desc,select 返回结果集
insert,update ,delete返回布尔值
ASSOC:关联数组
row;索引数组
array:混合数组
fetch只能获得一条,但是可以自动移动,结果集的记录指针,配合循环结构,完成所有数据的操作
mysql 错误:
获得错误信息;
mysql_error();错误信息
mysql_errno();错误编号
1、获得结果集内的数据量
mysql_num_rows(结果集)
查
2、操作后,受影响的行数
mysql_affected_rows();
适用于 增删改
3、获得最新的自动增长的字段的值,通常是id主键
mysql_insert_id();
4、如果资源使用完毕,应该释放资源
mysql_free_result(结果集);
需要释放的资源;复合类型的数据(数组,对象),资源
unset一下变量就行