標籤:
觸發器
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一下變數就行
msql資料庫觸發器和串連mysql常用函數