實驗8:觸發(fā)器創(chuàng)建與管理
一、實驗?zāi)康?/h3>
1.理解觸發(fā)器的概念與類型。
2.理解觸發(fā)器的功能及工作原理。
3.掌握創(chuàng)建、更改、刪除觸發(fā)器的方法。
4.掌握利用觸發(fā)器維護數(shù)據(jù)完整性的方法。
二、實驗內(nèi)容
1.驗證性實驗:某同學(xué)定義產(chǎn)品信息product表,并對其觸發(fā)器創(chuàng)建與管理
2.設(shè)計性試驗:某同學(xué)定義產(chǎn)品信息product表,并對其觸發(fā)器創(chuàng)建與管理
三、實驗步驟與實驗結(jié)果
(一)驗證性實驗
某同學(xué)定義產(chǎn)品信息product表,主要信息有:產(chǎn)品編號、產(chǎn)品名稱、主要功能、生產(chǎn)廠商、c廠商地址,生成product表的SQL代碼如下:
CREATE TABLE product (
id INT(10) NOT NULL UNIQUE PRIMARY KEY ,
name VARCHAR(20) NOT NULL ,
function VARCHAR(50) ,
company VARCHAR(20) NOT NULL,
address VARCHAR(50)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
在對product表進行數(shù)據(jù)操作時,需要對操作的內(nèi)容和時間進行記錄。于是定義了operate表,其表生成SQL語句為:
CREATE TABLE operate (
op_id INT(10) NOT NULL UNIQUE PRIMARY KEY AUTO_INCREMENT ,
op_name VARCHAR(20) NOT NULL ,
op_tiem TIME NOT NULL
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
請完成如下任務(wù):
1.在product表上分別創(chuàng)建BEFORE INSERT、AFTER UPDATE和AFTER DELETE3個觸發(fā)器,觸發(fā)器的名稱分別為Tproduct_bf_insert、Tproduct_af_update和Tproduct_af_del。執(zhí)行語句部分都是向operate表插入操作方法和操作時間。
(1)創(chuàng)建Tproduct_bf_insert觸發(fā)器SQL代碼如下:
CREATE TRIGGER Tproduct_bf_insert BEFORE INSERT
ON product FOR EACH ROW
INSERT INTO operate VALUES(null, 'Insert product', now());
(2)創(chuàng)建Tproduct_af_update觸發(fā)器的SQL代碼如下:
CREATE TRIGGER Tproduct_af_update AFTER UPDATE
ON product FOR EACH ROW
INSERT INTO operate VALUES(null, 'Update product', now());
(3)創(chuàng)建Tproduct_af_del觸發(fā)器的SQL代碼如下:
CREATE TRIGGER Tproduct_af_del AFTER DELETE
ON product FOR EACH ROW
INSERT INTO operate VALUES(null, 'delete product', now());
2.對product表分別執(zhí)行INSERT、UPDATE和DELETE操作,分別查看operate表。
(1)對product表中插入一條記錄:1, 'abc','治療感冒', '北京abc制藥廠','北京市昌平區(qū)'
INSERT INTO product VALUES(1, 'abc','治療感冒', '北京abc制藥廠','北京市昌平區(qū)');
(2)更新記錄,將產(chǎn)品編號為1的廠商住址:改為“北京市海淀區(qū)”。
UPDATE product SET address='北京市海淀區(qū)' WHERE id=1;
(3)刪除產(chǎn)品編號為1的記錄。
DELETE FROM product WHERE id=1;
3.刪除Tproduct_bf_insert觸發(fā)器
DROP TRIGGER Tproduct_bf_insert;
(二)設(shè)計性試驗
1.在product表上分別創(chuàng)建AFTER INSERT、BEFORE UPDATE和BEFORE DELETE 3個觸發(fā)器, ?觸發(fā)器的名稱分別為product_af_insert、product_bf_update和Tproduct_bf_del。執(zhí)行語句部分都是向operate表中插入操作方法和操作時間。
CREATE TRIGGER product_af_insert AFTER INSERT
ON product FOR EACH ROW
INSERT INTO operate VALUES(null, 'Insert product', now());
CREATE TRIGGER product_bf_update BEFORE UPDATE
ON product FOR EACH ROW
INSERT INTO operate VALUES(null, 'Update product', now());
CREATE TRIGGER Tproduct_bf_del BEFORE DELETE
ON product FOR EACH ROW
INSERT INTO operate VALUES(null, 'delete product', now());
2.查看product_bf_del觸發(fā)器的基本結(jié)構(gòu)。
SELECT * FROM information_schema.TRIGGERS WHERE trigger_name='product_bf_del';
3.對product表分別執(zhí)行如下INSERT、UPDATE和DELETE操作,分別查看operate表。
INSERT INTO product VALUES(2, '止血靈','止血', '北京止血靈制藥廠','北京市昌平區(qū)');
UPDATE product SET address='天津市開發(fā)區(qū)' WHERE id=2;
?
DELETE FROM product WHERE id=2;
?
4.刪除product_bf_update觸發(fā)器。
四、觀察與思考
1.能否在當前數(shù)據(jù)庫中為其他數(shù)據(jù)庫創(chuàng)建觸發(fā)器?
答:能。
2.觸發(fā)器何時被激發(fā)?
答:觸發(fā)器主要是通過事件(增、刪、改)進行觸發(fā)被自動調(diào)用執(zhí)行的。
五、實驗要求
按要求完成,詳細記錄操作步驟,書寫實驗報告。所有實驗環(huán)節(jié)均由每位學(xué)?生獨立完成,認真記錄操作過程,嚴禁抄襲他人實驗結(jié)果。文章來源:http://www.zghlxwxcb.cn/news/detail-759043.html
六、實驗總結(jié)
通過本次實驗了解了觸發(fā)器的作用,學(xué)習了怎么使用觸發(fā)器,關(guān)于表增加修改和刪除的時候觸發(fā)器的工作方式。觸發(fā)器是一個功能強大的工具??梢允苟鄠€不同的用戶能夠在保持數(shù)據(jù)完整性和一致性的良好環(huán)境進行修改操作。文章來源地址http://www.zghlxwxcb.cn/news/detail-759043.html
到了這里,關(guān)于數(shù)據(jù)庫系統(tǒng)原理及MySQL應(yīng)用教程實驗八觸發(fā)器創(chuàng)建與管理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!