確實(shí)不行,這是MYSQL的存儲(chǔ)過程十分不完善的地方

創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)制作、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)靜海,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575
我也找了很久,后來想了了個(gè)巧妙的方法
IF @i 30 THEN
-- 在這里拋出異常和取消 insert 操作
SELECT E001 INTO M_ERRMSG;
end if
1. MYSQL沒有拋出異常的語(yǔ)句,MYSQL已經(jīng)承認(rèn)此語(yǔ)句為SIGNAL,目前還沒封裝.
2. 所以目前能做的是, 要在拋出異常的地方,插入一個(gè)錯(cuò)誤語(yǔ)句
3. 這個(gè)錯(cuò)誤語(yǔ)句只能是運(yùn)行期錯(cuò)誤語(yǔ)句,否則編譯無法通過
4. 用SELELCT E001 INTO M_ERRMSG, 其中E001可以隨便定義為一個(gè)不存在字段或函數(shù), 因?yàn)檫@個(gè)錯(cuò)誤是運(yùn)行期錯(cuò)誤,編譯是可以通過的. 后面的INTO M_ERRMSG實(shí)際上沒有什么用處, 因?yàn)镾ELECT 后面必須加INTO一個(gè)變量,否則編譯也是不可以通過。
建立兩個(gè)單域的表格。一個(gè)表格中為姓名列表(表格名:data)。
另一個(gè)表格中是所插入字符的字符數(shù)(表格名:chars)。在data表格中定義一個(gè)觸發(fā)器。
每次在其中插入一個(gè)新姓名時(shí),chars表格中運(yùn)行的總數(shù)就會(huì)根據(jù)新插入記錄的字符數(shù)目進(jìn)行自動(dòng)更新。
(見列表A)
mysql CREATE TABLE data (name VARCHAR(255));
Query OK, 0 rows affected (0.09 sec)
mysql CREATE TABLE chars (count INT(10));
Query OK, 0 rows affected (0.07 sec)
mysql INSERT INTO chars (count) VALUES (0);
Query OK, 1 row affected (0.00 sec)
mysql CREATE TRIGGER t1 AFTER INSERT ON
data FOR EACH ROW UPDATE chars SET count = count + CHAR_LENGTH(NEW.name);
Query OK, 0 rows affected (0.01 sec)
列表A
理解上面代碼的關(guān)鍵在于CREATE TRIGGER命令,被用來定義一個(gè)新觸發(fā)器。這個(gè)命令建立一個(gè)新觸發(fā)器,假定的名稱為t1,每次有一個(gè)新記錄插入到data表格中時(shí),t1就被激活。
在這個(gè)觸發(fā)器中有兩個(gè)重要的子句:
AFTER INSERT子句表明觸發(fā)器在新記錄插入data表格后激活。
UPDATE chars SET count = count + CHAR_LENGTH(NEW.name)子句表示觸發(fā)器激活后執(zhí)行的SQL命令。在本例中,該命令表明用新插入的data.name域的字符數(shù)來更新 chars.count欄。這一信息可通過內(nèi)置的MySQL函數(shù)CHAR_LENGTH()獲得。
放在源表格域名前面的NEW關(guān)鍵字也值得注意。這個(gè)關(guān)鍵字表明觸發(fā)器應(yīng)考慮域的new值(也就是說,剛被插入到域中的值)。MySQL還支持相應(yīng)的OLD前綴,可用它來指域以前的值。
可以通過調(diào)用SHOW TRIGGER命令來檢查觸發(fā)器是否被激活,如列表B所示。
create trigger 觸發(fā)器名稱
after/before insert/update/delete on 表名
for each row
begin
sql 語(yǔ)句—一個(gè)或者多個(gè)語(yǔ)句范圍在 insert/update/delete內(nèi);
end
步驟:
1. 打開mysql workbench,進(jìn)入需要導(dǎo)出的數(shù)據(jù)庫(kù),點(diǎn)擊左側(cè)欄的【Management】tab鍵。
2. 點(diǎn)選要輸出的數(shù)據(jù)庫(kù)
點(diǎn)擊【Data Export】
選在要輸出的數(shù)據(jù)庫(kù)
選擇是否輸出存儲(chǔ)過程和函數(shù),事件,觸發(fā)器
點(diǎn)擊Start Export
3. 導(dǎo)出成功!
分享文章:mysql觸發(fā)器怎么輸出 mysql觸發(fā)器輸出語(yǔ)句
文章網(wǎng)址:http://www.chinadenli.net/article46/doosheg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、靜態(tài)網(wǎng)站、品牌網(wǎng)站建設(shè)、營(yíng)銷型網(wǎng)站建設(shè)、電子商務(wù)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)