日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

数据库系统实训——实验七——触发器

發(fā)布時(shí)間:2025/3/15 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据库系统实训——实验七——触发器 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第一部分:樣例庫(kù)的應(yīng)用
1) INSERT 觸發(fā)器
語句:
CREATE TABLE orders_log
(
change_id int NOT NULL AUTO_INCREMENT,
changed_on datetime NOT NULL ,
change_type char(1) NOT NULL ,
order_num int NOT NULL ,
PRIMARY KEY (change_id)
) ENGINE=INNODB;
CREATE TRIGGER neworder AFTER INSERT ON orders
FOR EACH ROW
BEGIN
INSERT INTO orders_log(changed_on, change_type, order_num)
VALUES(Now(),‘A’, NEW.order_num);
END;
截圖:

語句:
INSERT INTO orders(order_date, cust_id)
VALUES(Now(), 10001);

SELECT * FROM orders_log;

截圖:

2) DELETE觸發(fā)器
語句:
CREATE TABLE archive_orders
(
order_num int NOT NULL,
order_date datetime NOT NULL ,
cust_id int NOT NULL
) ENGINE=InnoDB;
CREATE TRIGGER deleteorder BEFORE DELETE ON orders
FOR EACH ROW
BEGIN
INSERT INTO orders_log(changed_on, change_type, order_num)
VALUES(Now(),‘D’, OLD.order_num);
INSERT INTO archive_orders(order_num, order_date, cust_id)
VALUES(OLD.order_num, OLD.order_date, OLD.cust_id);
END;
截圖:

語句:
INSERT INTO orders(order_date, cust_id) VALUES(Now(), 10001);
SELECT * FROM orders_log;
SELECT * FROM archive_ orders;
截圖:

3) UPDATE觸發(fā)器
語句:
CREATE TRIGGER updatevendor BEFORE UPDATE ON vendors
FOR EACH ROW SET NEW.vend_state = Upper(NEW.vend_state);

CREATE TRIGGER updateORDER BEFORE UPDATE ON ORDERS
FOR EACH ROW
BEGIN
INSERT INTO orders_log(changed_on, change_type, order_num)
VALUES(Now(),‘U’, OLD.order_num);
SET NEW.ORDER_DATE = NOW();
END;
截圖:

語句:
UPDATE orders SET cust_id=’10006’ WHERE cust_id=’10005’;
SELECT * FROM orders_log;
SELECT * FROM orders;
截圖:

第二部分:所選課題數(shù)據(jù)庫(kù)的應(yīng)用
1)INSERT 觸發(fā)器
語句:
CREATE TABLE orders_log
(
change_id int NOT NULL AUTO_INCREMENT,
change_type char(1) NOT NULL ,
order_num int NOT NULL ,
PRIMARY KEY (change_id)
) ENGINE=INNODB;

CREATE TRIGGER neworder AFTER INSERT ON movies
FOR EACH ROW
BEGIN
INSERT INTO orders_log(change_type, order_num)
VALUES(‘A’, NEW.year);
END;
截圖:

語句:
INSERT INTO movies(year)
VALUES(1980);
SELECT * FROM orders_log;
截圖:

2) DELETE觸發(fā)器
語句:
CREATE TABLE archive_orders
(
year int NOT NULL,
length int NOT NULL
) ENGINE=InnoDB;

CREATE TRIGGER deleteorder BEFORE DELETE ON movies
FOR EACH ROW
BEGIN
INSERT INTO orders_log(change_type, order_num)
VALUES(‘D’, OLD.year);
INSERT INTO archive_orders(year,length)
VALUES(OLD.year, OLD.length);
END;
截圖:

語句:
INSERT INTO movies(year) VALUES(118);
SELECT * FROM orders_log;
SELECT * FROM archive_ orders;
截圖:

3) UPDATE觸發(fā)器
語句:
CREATE TRIGGER updatevendor BEFORE UPDATE ON studio
FOR EACH ROW SET NEW.name = Upper(NEW.name);

CREATE TRIGGER updateORDER BEFORE UPDATE ON MOVIES
FOR EACH ROW
BEGIN
INSERT INTO orders_log(change_type, order_num)
VALUES(‘U’, OLD.year);
SET NEW.name = NOW();
END;

UPDATE movies SET year=’1980’ WHERE year=’1977’;
SELECT * FROM orders_log;
SELECT * FROM movies;
截圖:

總結(jié)

以上是生活随笔為你收集整理的数据库系统实训——实验七——触发器的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。