MySQL觸發(fā)器的創(chuàng)建與應用
---觸發(fā)器是MySQL數(shù)據(jù)庫中與數(shù)據(jù)表相關的特殊對象,當滿足特定條件時被觸發(fā)執(zhí)行其中定義的語句集合。這種特性有助于在數(shù)據(jù)庫層面確保數(shù)據(jù)的完整性。創(chuàng)建觸發(fā)器的語法格式如下:```sqlCREATE 觸
---
觸發(fā)器是MySQL數(shù)據(jù)庫中與數(shù)據(jù)表相關的特殊對象,當滿足特定條件時被觸發(fā)執(zhí)行其中定義的語句集合。這種特性有助于在數(shù)據(jù)庫層面確保數(shù)據(jù)的完整性。創(chuàng)建觸發(fā)器的語法格式如下:
```sql
CREATE 觸發(fā)器名 BEFORE | AFTER INSERT | UPDATE | DELETE ON 表名 FOR EACH ROW 觸發(fā)器主體;
```
創(chuàng)建數(shù)據(jù)表
首先,我們需要創(chuàng)建一個數(shù)據(jù)表,示例代碼如下:
```sql
mysql> create table tb_emp8 (
id int(11) primary key not null,
name varchar(22) unique,
depId int(11) not null,
salary float default 0);
```
使用以上SQL語句成功創(chuàng)建了一個名為`tb_emp8`的數(shù)據(jù)表。
查詢表結構
接著,可以使用`desc`語句來查詢表的結構,以便更好地理解數(shù)據(jù)表的字段信息。
創(chuàng)建觸發(fā)器
現(xiàn)在,我們將創(chuàng)建一個名為`SumOfSalary`的觸發(fā)器。這個觸發(fā)器在向數(shù)據(jù)表`tb_emp8`中插入數(shù)據(jù)之前會對新插入的`salary`字段值進行求和計算。以下是相關SQL語句及執(zhí)行過程:
```sql
CREATE TRIGGER SumOfSalary BEFORE INSERT ON tb_emp8
FOR EACH ROW
SET @sum @sum ;
```
執(zhí)行觸發(fā)器
觸發(fā)器`SumOfSalary`創(chuàng)建完成后,需要執(zhí)行`SET @sum0;`來初始化求和變量。
隨后,插入新數(shù)據(jù),觀察`sum`變量的自動增加情況:
```sql
INSERT INTO tb_emp8 VALUES(3,'c',1,1000),(4,'d',1,500);
```
檢查求和結果
最后,通過查詢`@sum`變量的值來驗證是否正確進行了薪資求和:
```sql
SELECT @sum; -- @sum
-- 2500
```
以上操作演示了MySQL觸發(fā)器的創(chuàng)建和應用過程,通過觸發(fā)器可以實現(xiàn)在數(shù)據(jù)操作前后執(zhí)行指定邏輯,提高數(shù)據(jù)庫的靈活性和數(shù)據(jù)完整性。