建立兩個單域的表格。一個表格中為姓名列表(表格名:data)。另一個表格中是所插入字元的字元數(表格名:chars)。在data表格中定義一個觸發器。每次在其中插入一個新姓名時,chars表格中執行的總數就會根據新插入記錄的字元數目進行自動更新。(見列表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 ONdata FOR EACH ROW UPDATE chars SET count = count + CHAR_LENGTH(NEW.name);Query OK, 0 rows affected (0.01 sec)列表A理解上面程式碼的關鍵在於CREATE TRIGGER命令,被用來定義一個新觸發器。這個命令建立一個新觸發器,假定的名稱為t1,每次有一個新記錄插入到data表格中時,t1就被啟用。在這個觸發器中有兩個重要的子句:AFTER INSERT子句表明觸發器在新記錄插入data表格後啟用。UPDATE chars SET count = count + CHAR_LENGTH(NEW.name)子句表示觸發器啟用後執行的SQL命令。在本例中,該命令表明用新插入的data.name域的字元數來更新 chars.count欄。這一資訊可透過內建的MySQL函式CHAR_LENGTH()獲得。放在源表格域名前面的NEW關鍵字也值得注意。這個關鍵字表明觸發器應考慮域的new值(也就是說,剛被插入到域中的值)。MySQL還支援相應的OLD字首,可用它來指域以前的值。可以透過呼叫SHOW TRIGGER命令來檢查觸發器是否被啟用,如列表B所示。
建立兩個單域的表格。一個表格中為姓名列表(表格名:data)。另一個表格中是所插入字元的字元數(表格名:chars)。在data表格中定義一個觸發器。每次在其中插入一個新姓名時,chars表格中執行的總數就會根據新插入記錄的字元數目進行自動更新。(見列表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 ONdata FOR EACH ROW UPDATE chars SET count = count + CHAR_LENGTH(NEW.name);Query OK, 0 rows affected (0.01 sec)列表A理解上面程式碼的關鍵在於CREATE TRIGGER命令,被用來定義一個新觸發器。這個命令建立一個新觸發器,假定的名稱為t1,每次有一個新記錄插入到data表格中時,t1就被啟用。在這個觸發器中有兩個重要的子句:AFTER INSERT子句表明觸發器在新記錄插入data表格後啟用。UPDATE chars SET count = count + CHAR_LENGTH(NEW.name)子句表示觸發器啟用後執行的SQL命令。在本例中,該命令表明用新插入的data.name域的字元數來更新 chars.count欄。這一資訊可透過內建的MySQL函式CHAR_LENGTH()獲得。放在源表格域名前面的NEW關鍵字也值得注意。這個關鍵字表明觸發器應考慮域的new值(也就是說,剛被插入到域中的值)。MySQL還支援相應的OLD字首,可用它來指域以前的值。可以透過呼叫SHOW TRIGGER命令來檢查觸發器是否被啟用,如列表B所示。