mysql用觸發(fā)器禁止某條記錄的刪除、修改:
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比越秀網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式越秀網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋越秀地區(qū)。費用合理售后完善,10年實體公司更值得信賴。
delimiter //
CREATE TRIGGER xx_company_agent_update? BEFORE UPDATE ON xx_company_agent
FOR EACH ROW
BEGIN
IF OLD.bank_card is not null THEN
SET NEW.bank_card = OLD.bank_card,NEW.money= OLD.money,NEW.real_money=OLD.real_money,NEW.bank_name=OLD.bank_name;
END IF;
END;//
delimiter ;
擴展資料
mysql觸發(fā)器的使用
用戶記錄用戶的預期事件(schema是特殊用戶的數(shù)據(jù)庫對象集合。這些對象包括:表,索引,視圖,存儲程序等。在Oracle里, schema要求創(chuàng)建一個用戶。但是也可以創(chuàng)建一個沒有schema的用戶(根本沒有對象)。
所以在Oracle-中,用戶就是一個帳戶而schema就是對象??赡茉谄渌臄?shù)據(jù)庫平臺上可以創(chuàng)建一個沒有用戶的schema。LOGOFF不能是AFTER LOGOFF,將會重新操作,這里應該是BEFORE,否則就會報錯:替換可以插入不能有AFTER。創(chuàng)建或替換觸發(fā)器MYLOGOFFTRIGGER。
參考資料來源:百度百科—mySQL
-- 查看數(shù)據(jù)庫已有觸發(fā)器 use yourdatabase go select * from sysobjects where xtype='TR' -- 查看單個觸發(fā)器 exec sp_helptext '觸發(fā)器名'--刪除觸發(fā)器: 基本語句如下: drop trigger trigger_name
方法/步驟
首先,我們需要確定自己的Mysql數(shù)據(jù)庫的版本,因為my sql數(shù)據(jù)庫是從5.0.2版本才開始支持觸發(fā)器的。
我推薦大家在電腦的dos命令界面中輸入 mysql --version,來獲取mysql的版本號,注意version的兩個橫線和之前的mysql是有一個空格的。
上一步獲取了我們的mysql版本號,這一不我們就開始建立觸發(fā)器了。我采用的以視圖加代碼的方式創(chuàng)建,我們在數(shù)據(jù)表中找到要執(zhí)行刪除操作的表,然后右鍵設計表
這樣我們就打開了表的設計頁面,可以看到有一個觸發(fā)器選項卡,我們點擊“觸發(fā)器”
可以看到對應的選項,我們在名里面添加我們需要新建的觸發(fā)器的名字,在觸發(fā)選項中選擇before或者after,然后在插入、更新、刪除三個選項中勾選一個。
這樣我們就建立了一個名為“datri”的觸發(fā)器,在刪除操作執(zhí)行之后觸發(fā)
然后我們在下面的定義下面的框中輸入我們需要執(zhí)行的操作。然后點擊sql預覽,可以看到整個觸發(fā)器的代碼
最后就是保存了,由于我們做的是觸發(fā)器,保存之后,在執(zhí)行刪除操作時,這個觸發(fā)器才相當于 被執(zhí)行。
首先在sql中查詢計劃事件的狀態(tài):SHOW VARIABLES LIKE 'event_scheduler'
如果返回的是off表示當前是關閉狀態(tài),如果是on當前已經(jīng)開啟了計劃任務。
在mysql程序的目錄下找到my.ini文件,添加一個項:event_scheduler = 1
保存后重啟mysql服務即可,重啟服務可以在服務管理里面找到
也可以用腳本來實現(xiàn):
mysql event_scheduler
開啟event_scheduler sql指令:
SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;
相反,關閉event_scheduler指令:
SET GLOBAL event_scheduler = OFF;
SET @@global.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@global.event_scheduler = 0;