補充知識,後續可能會用到:
1,auto_increment關鍵字(在尾部新增,放在主鍵後面):設定變數為自增變數
2,一般情況下,mysql的預設是以; 作為結束執行語句,與觸發器中需要的分行起衝突
解決辦法:delimiter ||,可以將結束符號變成||
當觸發器建立後,可用delimiter;還原;
一,觸發器:顧名思義,觸發器就是在對錶進行插入,更新,刪除操作時會觸發的操作
1.1建立觸發器
格式:在每個行的表名觸發的操作之前/之後建立觸發器名
觸發的操作有三種:create trigger 觸發器名 before|after 觸發事件on 表名 for each row
begin
執行語句列表
end
insert:insert觸發進行操作,load data和replace也同樣會觸發操作。
update:更新觸發進行操作。
delete:刪除觸發進行操作,更換也會觸發操作。
注意:對於一張表來說不能有倆個觸發操作同樣的觸發器,只能各自有乙個。
1.2刪除觸發器:
drop trigger器名
1.3觸發器的作用:當對資料表進行操作前後,觸發器可用來檢查資料表某些資料,或是進行對資料表的操作(插入某項資料,刪除某項資料)
實驗用的雇員資料表,數項設定為auto_increment自增屬性,插入時自動增加。
//增加數列列的語句:alter table employee add column number int(1)primary key auto_increment;
可以知道當前人數有7位,假定我們設定只能存入七位職員資料,通過乙個觸發器inspeck判斷插入前人數(數目)是否超過人數限制7位
在插入員工之前建立觸發器檢查
對於每一行
開始if(從員工中選擇計數(id))> = 7然後
插入aaaaaaaa值(1); //由於目前的mysql的沒有丟擲異常方法,設定乙個語句插入不存在的表資料達到丟擲異常效果
萬一;結束
|| //結束標誌通過delimiter ||改為||
此時已知表中有六位職員,只能新增最後一位,達到觸發器限制,會在新增前(之前)限制新增。
觸發器可以使用的場景有很多,且具有一定邏輯性,例如:一張貨物表,一張訂單表,當新增乙個新訂單時需要檢查貨物數量是否達到訂單要求,可以使用觸發器在訂單插入前檢查另一表中數量。
最後,刪除觸發器,畢竟一張表同一型別的觸發器只能有乙個。
掉落觸發檢查;
記得要將結束符改回來:delimiter;
(一)(二)
(三)
MySQL學習筆記 四
上篇我們學會了如何建立乙個資料庫和資料庫表,並知道如何向資料庫表中新增記錄。那麼我們如何從資料庫表中檢索資料呢?1 從資料庫表中檢索資訊 實際上,前面我們已經用到了select語句,它用來從資料庫表中檢索資訊。select語句格式一般為 以前所使用的 表示選擇所有的列。2 查詢所有資料 mysql ...
MySQL學習筆記(四)
mysql支援regexp的正規表示式 找出以a d 為開頭的sname select from stu where sname regexp a d 接下來介紹一下與時間有關的函式。獲取當前時分秒 獲取當前的年月日 獲取當前的時間,年月日時分秒 返回日期date是星期幾 1 星期天,2 星期一,7...
mysql學習筆記(四)
23資料備份和恢復 1 備份 使用mysqldump命令備份 mysqldump u user h localhost p password dbname table1,table2 filename.sql 備份所有資料庫 mysqldump u user h localhost p all da...