重蔚自留地MySQL——mysql事務觸發器函數過程

MySQL 技術 重蔚自留地 2017-05-26

數據備份

對數據表內容進行備份

備份:select [*/字段列表] into outfile 文件路徑 [字段處理] [行處理] from 表

還原:load data infile 文件路徑 into 表 [字段處理] [行處理]

備份 ---------------》 數據庫 -> 外部文件:①sql語法是正確的;②SQL語句是有效的

把表內數據給清理

還原 ---------------》 外部文件 –> 數據庫

對錶結構進行備份(也包含數據)

備份:mysqldump.exe –h –P –u –p 數據庫 [數據表 數據表…] > 文件路徑 (通常以.sql)

還原:mysql.exe –h –P –u –p 數據庫 < 文件路徑

mysql進入之後:source 文件路徑

事務處理

自動處理:autocommit = on(默認),改成off手動處理

手動處理:只在需要使用事務的地方開啟

開啟事務:start/begin transaction;

---SQL操作

設置回滾點:savepoint 回滾點名字

---SQL操作

回滾到回滾點:rollback to 回滾點名字

--

回滾或者提交:rollback/commit

事務處理四大特點:

原子性:一個事務是一個整體,要麼全部成功,要麼全部失敗

一致性:在事務處理的過程前後,數據是一致的。在做事務處理的時候,數據庫中的數據不會被改變,所以是一致的。

隔離性:一個事務的操作,不會影響另外事務的操作(兩個事務不能針對同一行記錄)

永久性:一旦事務提交,那麼對數據的修改是永久性的,不可逆

觸發器

語法:create trigger 觸發器名字 觸發時間 觸發類型 on 表名 for each row

begin

//觸發體,每一行都需要語句結束符,只能是分號

end

觸發器是自動被調用

觸發器時間:before和after

觸發類型:insert,update,delete

變量:系統變量和自定義變量

系統變量訪問:select @@變量名

重蔚自留地MySQL——mysql事務觸發器函數過程

修改系統變量:set 變量名 = 值;set global 變量名 = 值;

自定義變量:set @變量名 = 值;set @變量名 := 值;select 字段列表 from 表名 into @變量列表;declare 變量名 數據類型;

@變量名:全局變量,所有地方都可以使用

變量名:局部變量,只能在函數內

函數:系統函數和自定義函數

語法:create function 函數名(參數列表) returns 數據類型

begin

//函數體

//分支結構+循環結構

//return 數據

end

參數:參數必須有數據類型:變量名 數據類型

函數調用:select 函數名(參數列表)

存儲過程

語法:create procedure 過程名(參數列表)

begin

//過程體

end

參數列表:類型 變量名 數據類型

類型:in,out,inout

過程訪問:call 過程名(參數列表)

索引:mysql幾大索引

用戶管理:

創建用戶:create user 用戶名@主機名 indentified by 密碼

賦予權限:grant 權限列表 on 庫.表 to 用戶名@主機名

收回權限:revoke 權限列表 on 庫.表 from 用戶名@主機名

刪除用戶:drop user 用戶名@主機名

商品表:pro_goods

訂單表:pro_order

在插入訂單前,先判斷商品庫存是否足夠,如果不足,則不能生成訂單,如果足則可以。

before insert:判斷庫存是否足夠,並不終止insert語句的執行

after insert:判斷before insert的判斷結果,如果前面判斷失敗,那麼刪除訂單記錄

=========》

after insert:商品表庫存先減少。判斷商品表庫存是否大於0,如果小於0,把商品的庫存回退到之前的數據,然後將當前的這條訂單記錄給刪除。

使用before insert來對數據進行判斷,如果判斷失敗,則想辦法不讓insert語句執行。

重蔚自留地MySQL——mysql事務觸發器函數過程

相關推薦

推薦中...