對於mysql的異常處理,本人不常用。不過我覺得還是有寫下來的必要。
標準格式
declare handler_type handler for condition_value[,...] statement
handler_type:
continue
| exit
| undo --暫時不支援
condition_value:
sqlstate [value] sqlstate_value
| condition_name
| sqlwarning
| not found
| sqlexception
| mysql_error_code
condition_value細節
1、mysql error code 列表
比如我的/usr/local/mysql/share/mysql/errmsg.txt
說明:sqlstate [value] sqlstate_value這種格式是專門為ansi sql 和 odbc以及其他的標準.
並不是所有的mysql error code 都對映到sqlstate。
2、假如不需要插入error code,可以用速記條件來代替
sqlwarning 代表所有以01開頭的錯誤**
not found 代表所有以02開頭的錯誤**,當然也可以代表乙個游標到達資料集的末尾。
sqlexception 代表除了sqlwarning和not found 的所有錯誤**。
3、具體示例:
create table t (s1 int,primary key (s1));
mysql> use t_girl
database changed
mysql> create table t (s1 int,primary key (s1));
query ok, 0 rows affected (0.00 sec)
mysql>
mysql>
mysql> delimiter ||
mysql> create procedure handlerdemo ()
-> begin
-> declare exit handler for sqlstate 』23000』 begin end; -- 遇到重複鍵值就退出
-> set @x = 1;
-> insert into t values (1);
-> set @x = 2;
-> insert into t values (1);
-> set @x = 3;
-> end||
query ok, 0 rows affected (0.00 sec)
mysql> delimiter ;
mysql> call handlerdemo();
query ok, 0 rows affected (0.00 sec)
mysql> select @x;
| @x |
| 2 |
1 row in set (0.00 sec)
mysql> call handlerdemo();
query ok, 0 rows affected (0.00 sec)
mysql> select @x;
| @x |
| 1 |
1 row in set (0.00 sec)
mysql>
mysql資料庫效能資料 MYSQL資料庫效能優化
1.選取最適用的字段屬性 表中字段的寬度設得盡可能小 char 的上限為 255 位元組 固定占用空間 varchar 的上限 65535 位元組 實際占用空間 text 的上限為 65535。盡量把字段設定為 not null,執行查詢的時候,資料庫不用去比較 null 值。2.使用連線 join...
MySQL資料庫使用 MySQL資料庫管理
開發時一般不使用系統的root使用者,應該是建立乙個新的使用者,管理乙個工程。登入使用者的命令 mysql uusername p 登入完成後就進入sql命令格式,格式以 結尾。windows用安裝的時候設定的root登入命令列,如下圖所示。linux安裝時若沒有提示設定root密碼的,可以使用系統...
MySQL資料庫 一 MySQL資料庫簡介
mysql資料庫是常見的資料庫,對mysql資料庫的學習主要從下面幾方面展開,記得點開檢視哦!1.mysql c s架構 mysql的架構是c s架構,即客戶端 伺服器的架構 在root使用者下進行 mysql字元編碼 檢視mysql預設的字元編碼 預設的字元編碼是latin1 show varia...