navicat
創(chuàng)新互聯公司專注于企業(yè)全網整合營銷推廣、網站重做改版、白云網站定制設計、自適應品牌網站建設、成都h5網站建設、商城系統(tǒng)網站開發(fā)、集團公司官網建設、成都外貿網站制作、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為白云等各大城市提供網站開發(fā)制作服務。
for
mysql中如何添加delete觸發(fā)器
navicat
for
mysql
中,選中數據表—鼠標右鍵—設計表,有一個觸發(fā)器的設置,然后:
設置一個觸發(fā)器名稱,觸發(fā)選擇after,勾中插入
在下面的框中:(僅是舉例)
begin
insert
into
transfer(id,a1,a2,cz,qtime)
values(new.id,values1,values2,'已點',new.ordertime)
end
首先觸發(fā)該觸發(fā)器肯定是要在更新完成后,也就是insert、update、delete完成后再執(zhí)行更新B表對應的數據,當然了,觸發(fā)器肯定是針對A表來寫,這個是一個比較簡單的觸發(fā)器
CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
);
DELIMITER |
CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END
|
DELIMITER ;
INSERT INTO test3 (a3) VALUES
(NULL), (NULL), (NULL), (NULL), (NULL),
(NULL), (NULL), (NULL), (NULL), (NULL);
INSERT INTO test4 (a4) VALUES
(0), (0), (0), (0), (0), (0), (0), (0), (0), (0);
如果將下述值插入表test1,如下所示:
mysql INSERT INTO test1 VALUES
- (1), (3), (1), (7), (1), (8), (4), (4);
Query OK, 8 rows affected (0.01 sec)
Records: 8 Duplicates: 0 Warnings: 0
語法說明如下。
1) 觸發(fā)器名
觸發(fā)器的名稱,觸發(fā)器在當前數據庫中必須具有唯一的名稱。如果要在某個特定數據庫中創(chuàng)建,名稱前面應該加上數據庫的名稱。
2) INSERT | UPDATE | DELETE
觸發(fā)事件,用于指定激活觸發(fā)器的語句的種類。
注意:三種觸發(fā)器的執(zhí)行時間如下。INSERT:將新行插入表時激活觸發(fā)器。例如,INSERT 的 BEFORE 觸發(fā)器不僅能被 MySQL 的 INSERT 語句激活,也能被 LOAD DATA 語句激活。DELETE: 從表中刪除某一行數據時激活觸發(fā)器,例如 DELETE 和 REPLACE 語句。UPDATE:更改表中某一行數據時激活觸發(fā)器,例如 UPDATE 語句。
3) BEFORE | AFTER
BEFORE 和 AFTER,觸發(fā)器被觸發(fā)的時刻,表示觸發(fā)器是在激活它的語句之前或之后觸發(fā)。若希望驗證新數據是否滿足條件,則使用 BEFORE 選項;若希望在激活觸發(fā)器的語句執(zhí)行之后完成幾個或更多的改變,則通常使用 AFTER 選項。
4) 表名
與觸發(fā)器相關聯的表名,此表必須是永久性表,不能將觸發(fā)器與臨時表或視圖關聯起來。在該表上觸發(fā)事件發(fā)生時才會激活觸發(fā)器。同一個表不能擁有兩個具有相同觸發(fā)時刻和事件的觸發(fā)器。例如,對于一張數據表,不能同時有兩個 BEFORE UPDATE 觸發(fā)器,但可以有一個 BEFORE UPDATE 觸發(fā)器和一個 BEFORE INSERT 觸發(fā)器,或一個 BEFORE UPDATE 觸發(fā)器和一個 AFTER UPDATE 觸發(fā)器。
5) 觸發(fā)器主體
觸發(fā)器動作主體,包含觸發(fā)器激活時將要執(zhí)行的 MySQL 語句。如果要執(zhí)行多個語句,可使用 BEGIN…END 復合語句結構。
將delimiter ; 更改為delimiter //\x0d\x0a如下:\x0d\x0amysql delimiter //\x0d\x0amysql create trigger insertArticle_Trigger after insert on article1\x0d\x0a - for each row\x0d\x0a - begin\x0d\x0a - update board1 set articleCount = articleCount+1 where id=new.bid;\x0d\x0a - end;\x0d\x0a - //\x0d\x0a\x0d\x0a執(zhí)行如下語句,可查看到board1表articleCount被更改:\x0d\x0amysql delimiter ;\x0d\x0amysql insert into article1 values(1);\x0d\x0a\x0d\x0a其中delimiter作用:\x0d\x0a告訴mysql解釋器,該段命令是否已經結束了,mysql是否可以執(zhí)行了。 \x0d\x0a默認情況下,delimiter是分號;。在命令行客戶端中,如果有一行命令以分號結束, 那么回車后,mysql將會執(zhí)行該命令。但有時候,不希望MySQL這么做。在為可能輸入較多的語句,且語句中包含有分號。使用delimiter //,這樣只有當//出現之后,mysql解釋器才會執(zhí)行這段語句。詳見
希望你自己寫 ,做2個觸發(fā)器,
第一個觸發(fā)后可以做對overtime插入操作,這里你沒說觸發(fā)類型????
Create Trigger '增加加班信息'
On overtime --在overtime表中創(chuàng)建觸發(fā)器
for ????? ----觸發(fā)的事件
As --事件觸發(fā)后所要做的事情
begin
insert INTO overtime(你要加的信息)
end
第二個 基于overtime 表的觸發(fā)update類的 更新加班信息
Create Trigger '修改考勤信息表'
On overtime --在overtime表中創(chuàng)建觸發(fā)器
for insert --觸發(fā)的事件
As --事件觸發(fā)后所要做的事情
if Update(某字段)
begin
Update attend
set 你做overtime的插入后 attend 應該的變化
From attend ,Inserted i --Inserted臨時表
Where attend.emp_id =i.emp_id
end
做完之后 你插入幾次檢測下數據,再寫上報錯和其它
分享名稱:mysql怎么建立觸發(fā)器,mysql觸發(fā)器怎么用
分享URL:http://aaarwkj.com/article8/dsspsip.html
成都網站建設公司_創(chuàng)新互聯,為您提供云服務器、虛擬主機、關鍵詞優(yōu)化、建站公司、網站內鏈、ChatGPT
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯