navicat
創(chuàng)新互聯(lián)公司專注于企業(yè)全網(wǎng)整合營銷推廣、網(wǎng)站重做改版、白云網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為白云等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
for
mysql中如何添加delete觸發(fā)器
navicat
for
mysql
中,選中數(shù)據(jù)表—鼠標(biāo)右鍵—設(shè)計表,有一個觸發(fā)器的設(shè)置,然后:
設(shè)置一個觸發(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表對應(yīng)的數(shù)據(jù),當(dāng)然了,觸發(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ā)器在當(dāng)前數(shù)據(jù)庫中必須具有唯一的名稱。如果要在某個特定數(shù)據(jù)庫中創(chuàng)建,名稱前面應(yīng)該加上數(shù)據(jù)庫的名稱。
2) INSERT | UPDATE | DELETE
觸發(fā)事件,用于指定激活觸發(fā)器的語句的種類。
注意:三種觸發(fā)器的執(zhí)行時間如下。INSERT:將新行插入表時激活觸發(fā)器。例如,INSERT 的 BEFORE 觸發(fā)器不僅能被 MySQL 的 INSERT 語句激活,也能被 LOAD DATA 語句激活。DELETE: 從表中刪除某一行數(shù)據(jù)時激活觸發(fā)器,例如 DELETE 和 REPLACE 語句。UPDATE:更改表中某一行數(shù)據(jù)時激活觸發(fā)器,例如 UPDATE 語句。
3) BEFORE | AFTER
BEFORE 和 AFTER,觸發(fā)器被觸發(fā)的時刻,表示觸發(fā)器是在激活它的語句之前或之后觸發(fā)。若希望驗證新數(shù)據(jù)是否滿足條件,則使用 BEFORE 選項;若希望在激活觸發(fā)器的語句執(zhí)行之后完成幾個或更多的改變,則通常使用 AFTER 選項。
4) 表名
與觸發(fā)器相關(guān)聯(lián)的表名,此表必須是永久性表,不能將觸發(fā)器與臨時表或視圖關(guān)聯(lián)起來。在該表上觸發(fā)事件發(fā)生時才會激活觸發(fā)器。同一個表不能擁有兩個具有相同觸發(fā)時刻和事件的觸發(fā)器。例如,對于一張數(shù)據(jù)表,不能同時有兩個 BEFORE UPDATE 觸發(fā)器,但可以有一個 BEFORE UPDATE 觸發(fā)器和一個 BEFORE INSERT 觸發(fā)器,或一個 BEFORE UPDATE 觸發(fā)器和一個 AFTER UPDATE 觸發(fā)器。
5) 觸發(fā)器主體
觸發(fā)器動作主體,包含觸發(fā)器激活時將要執(zhí)行的 MySQL 語句。如果要執(zhí)行多個語句,可使用 BEGIN…END 復(fù)合語句結(jié)構(gòu)。
將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解釋器,該段命令是否已經(jīng)結(jié)束了,mysql是否可以執(zhí)行了。 \x0d\x0a默認(rèn)情況下,delimiter是分號;。在命令行客戶端中,如果有一行命令以分號結(jié)束, 那么回車后,mysql將會執(zhí)行該命令。但有時候,不希望MySQL這么做。在為可能輸入較多的語句,且語句中包含有分號。使用delimiter //,這樣只有當(dāng)//出現(xiàn)之后,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 應(yīng)該的變化
From attend ,Inserted i --Inserted臨時表
Where attend.emp_id =i.emp_id
end
做完之后 你插入幾次檢測下數(shù)據(jù),再寫上報錯和其它
分享名稱:mysql怎么建立觸發(fā)器,mysql觸發(fā)器怎么用
分享URL:http://sd-ha.com/article8/dsspsip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、虛擬主機(jī)、關(guān)鍵詞優(yōu)化、建站公司、網(wǎng)站內(nèi)鏈、ChatGPT
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)