MySQL测试脚本——创建触发器

55 阅读1分钟
-- 创建一个新的数据库(模式)
CREATE DATABASE IF NOT EXISTS TestDB;

-- 切换到新的数据库
USE TestDB;

-- 创建一个测试表
CREATE TABLE IF NOT EXISTS TestTable (
    ID INT PRIMARY KEY,
    Name VARCHAR(50)
);

-- 创建一个日志表,用于记录触发器操作
CREATE TABLE IF NOT EXISTS LogTable (
    Operation VARCHAR(10),
    Description VARCHAR(255),
    EventTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- 创建一个存储过程,用于记录插入操作
CREATE PROCEDURE LogInsertTrigger()
BEGIN
    INSERT INTO LogTable (Operation, Description)
    VALUES ('INSERT', 'A new row is being inserted.');
END;

-- 创建一个存储过程,用于记录更新操作
CREATE PROCEDURE LogUpdateTrigger()
BEGIN
    INSERT INTO LogTable (Operation, Description)
    VALUES ('UPDATE', 'A row is being updated.');
END;

-- 创建一个在插入之前触发的触发器
CREATE TRIGGER BeforeInsertTrigger
AFTER INSERT ON TestTable
FOR EACH ROW
BEGIN
    CALL LogInsertTrigger();
END;

-- 创建一个在更新之后触发的触发器
CREATE TRIGGER AfterUpdateTrigger
AFTER UPDATE ON TestTable
FOR EACH ROW
BEGIN
    CALL LogUpdateTrigger();
END;

-- 测试插入操作,触发器将记录插入操作
INSERT INTO TestTable (ID, Name)
VALUES (1, 'Alice');

-- 测试更新操作,触发器将记录更新操作
UPDATE TestTable
SET Name = 'Alice Updated'
WHERE ID = 1;

-- 查看 LogTable 中的记录,确认触发器是否正常工作
SELECT * FROM LogTable;