第五次作业

-- 创建 product 表(存产品信息)

CREATE TABLE product (

id INT(10) PRIMARY KEY, -- 产品编号,“主键” 就是这列值不能重复,用来唯一找某个产品

name VARCHAR(20) NOT NULL, -- 产品功能,“非空” 就是必须填,不能空着

func VARCHAR(50), -- 主要功能,允许空着不填

com VARCHAR(20) NOT NULL, -- 生产厂家,必须填

address VARCHAR(20) -- 地址信息

-- 创建 operate 表(存操作记录)

CREATE TABLE operate (

op_id INT(10) PRIMARY KEY AUTO_INCREMENT, -- 操作记录的编号,“自增” 就是每次插入自动 +1,不用自己填

op_type VARCHAR(20), -- 存操作类型

op_time VARCHAR(20) NOT NULL, -- 操作时间,必须填

product_id INT(10), -- 关联 product 表的 id,记录 “这次操作的是哪个产品”

FOREIGN KEY (product_id) REFERENCES product(id) -- 约束:product_id 必须是 product 表里存在的 id );

DELIMITER // -- 临时改结束符(因为触发器里有分号,避免 MySQL 提前结束)

CREATE TRIGGER product_after_insert_trigger

AFTER INSERT ON product -- 触发条件:往 product 表新增一行数据后

FOR EACH ROW -- 每新增一行,就执行一次

BEGIN -- 往 operate 表插一条记录:操作类型是 insert,时间是现在,关联的产品 id 是刚新增的

INSERT INTO operate (op_type, op_time, product_id) VALUES ('insert', NOW(), NEW.id); --

NEW.id 就是刚新增那行的产品编号

END // DELIMITER ; -- 改回默认结束符

改了 product 里的任何内容(比如改了产品名称、厂家),触发器就自动在 operate 里记一条:操作类型 update、时间是现在、对应产品编号是修改后的(如果没改编号,就和原来一样)。

DELIMITER //

CREATE TRIGGER product_after_delete_trigger

AFTER DELETE ON product -- 触发条件:从 product 表删除一行数据后

FOR EACH ROW

BEGIN

INSERT INTO operate (op_type, op_time, product_id)

VALUES ('delete', NOW(), OLD.id); -- OLD.id 是删除前那行的产品编号

END //

DELIMITER ; (标准)

删了 product 里的某个产品(比如删了 “手机” 这条数据),触发器就自动在 operate 里记一条:操作类型 delete、时间是现在、对应产品编号是刚删的那个(删完就没了,所以用 OLD.id 拿删除前的编号)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值