MYSQL--第七次作业

MYSQL--第七次作业

在product表上创建三个触发器。每次激活触发器后,都会更新operate表。product表和表的内容如下

Product表内容

字段名		 字段描述 	  数据类型 	   主键 	外键 	非空 	唯一 	自增 
Id		    产品编号	    Int(10)   是 	否 	是 	是 	 否
Name  		产品功能 	Varchar(20)   否 	否 	是 	否 	 否
Function 	主要功能 	Varchar(50)   否 	否 	否 	否 	 否 
Company	    生产厂家 	Varchar(20)   否 	否 	是 	否 	 否 
Address		家庭住址 	Varchar(20)   否 	否 	否 	否 	 否 

Operate表的内容

字段名	字段描述 	数据类型 	 主键   外键   非空   唯一 	 自增 
Op_id	编号 	    Int(10) 	 是 	   否 	是 	  是     是 
Op_type 操作方式   Varchar(20)  否 	  否    是 	 否 	   否 
Op_time	操作时间   Varchar(20)	否 	  否    是 	 否 	   否
环境搭建:
sql 复制代码
-- 创建product表:
CREATE TABLE product (  
    Id INT(10) AUTO_INCREMENT PRIMARY KEY,  
    Name VARCHAR(20) NOT NULL,  
    `Function` VARCHAR(50),
    Company VARCHAR(20) NOT NULL, 
    Address VARCHAR(20)
);

-- 创建operate表:
CREATE TABLE operate (  
    Op_id INT(10) AUTO_INCREMENT PRIMARY KEY,  
    Op_type VARCHAR(20) NOT NULL,  
    Op_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP  
);
要求及解答:

1、在product表上分别创建BEFORE INSERT、AFTER UPDATE和AFTER DELETE 3个触发器,触发器名称分别为product_bf_insert、product_af_update和product_af_del。执行语句部分是向operate表插入操作方法和操作时间。

sql 复制代码
-- 创建product_bf_insert触发器:
DELIMITER $$
CREATE TRIGGER product_bf_insert BEFORE INSERT ON product
FOR EACH ROW
BEGIN
    INSERT INTO operate ( Op_type, Op_time )
  VALUES
    (
      'Insert',
    NOW());

END $$
DELIMITER;

-- 创建product_af_update触发器:
DELIMITER $$
CREATE TRIGGER product_af_update AFTER UPDATE ON product
FOR EACH ROW
BEGIN
    INSERT INTO operate ( Op_type, Op_time )
  VALUES
    (
      'Update',
    NOW());
  
END $$
DELIMITER;

-- 创建product_af_del触发器:
DELIMITER $$
CREATE TRIGGER product_af_del AFTER DELETE ON product
FOR EACH ROW
BEGIN
    INSERT INTO operate ( Op_type, Op_time )
  VALUES
    (
      'Delete',
    NOW());
  
END $$
DELIMITER;

2、对product表分别执行INSERT、UPDATE和DELETE操作

2.1:INSERT操作:

sql 复制代码
INSERT INTO product(Id,Name,`Function`,Company,address)
VALUE
(1,'小新','吃饭','A','西安'),
(2,'小葵','睡觉','A','南京'),
(3,'正男','看电视','B','成都'),
(4,'风间','玩游戏','C','山东'),
(5,'美伢','跳舞','A','上海'),
(6,'广志','唱歌','B','西安');

2.2:UPDATE操作:

sql 复制代码
-- 修改Name='美伢'的Function为看电视:
UPDATE product
SET `Function` = '看电视'
WHERE Name = '美伢';

2.3:DELETE操作:

sql 复制代码
-- 删除表中Name='风间'的内容:
DELETE
FROM product
WHERE Name = '风间';

3、删除product_bf_insert和product_af_update这两个触发器

sql 复制代码
DROP TRIGGER IF EXISTS product_bf_insert;
DROP TRIGGER IF EXISTS product_af_update;
相关推荐
做梦敲代码25 分钟前
达梦数据库-读写分离集群部署
数据库·达梦数据库
苹果醋31 小时前
2020重新出发,MySql基础,MySql表数据操作
java·运维·spring boot·mysql·nginx
小蜗牛慢慢爬行1 小时前
如何在 Spring Boot 微服务中设置和管理多个数据库
java·数据库·spring boot·后端·微服务·架构·hibernate
hanbarger1 小时前
nosql,Redis,minio,elasticsearch
数据库·redis·nosql
微服务 spring cloud2 小时前
配置PostgreSQL用于集成测试的步骤
数据库·postgresql·集成测试
先睡2 小时前
MySQL的架构设计和设计模式
数据库·mysql·设计模式
弗罗里达老大爷2 小时前
Redis
数据库·redis·缓存
仰望大佬0072 小时前
Avalonia实例实战五:Carousel自动轮播图
数据库·microsoft·c#
学不透java不改名2 小时前
sqlalchemy连接dm8 get_columns BIGINT VARCHAR字段不显示
数据库