MySQL数据库触发器讲解 [创建/删除/查询/select into]
阅读原文时间:2023年09月07日阅读:4

刚学习实例完mysql触发器, 前来分享学习经验.    菜鸟装逼,  老鸟勿喷

先来认识一下有关触发器的一些关键词.  在使用触发器时, 这些关键词将被用到, 请记下它们的模样和用途(意思)

create [创建]
drop [删除]
trigger [触发器]
before [之前]
after [之后]
insert [插入]
update [更新]
delete [删除]
on [在]
for each row [每一行] #这句话在mysql中是固定的, 似乎是条件吧, 每操作一条执行一次代码块.
begin [开始] #执行代码块开始
end [结束] #执行代码块结束
set [设] #通常给变量赋值
@@IDENTITY / LAST_INSERT_ID() [取最近插入记录的自增id]
#在mysql中, "@"前缀的是用户定义的变量, 直接用, 无需声明.  "@@"前缀的为全局变量, 通常是系统定义

查询触发器:
SELECT * FROM information_schema.`TRIGGERS`;

删除触发器:
drop  trigger 触发器名称

创建触发器:
create trigger 触发器名称 after insert on 表名称 for each ROW
BEGIN
#代码块
end;

抛开查询/删除触发器, 没什么好解读的.  创建触发器这里我为大家解读  并发一个例子给大家看;

create[创建]  trigger[触发器] name[触发器名称]
after[之后|before=之前] insert[操作:insert/update/delete] on[在] table[表名称]
for each row
begin[代码块开始]
#code
end;[代码块结束]

这是我做的例子

create trigger insertUser
after insert on table_user
for each ROW
BEGIN
    #set @user_ID = @@IDENTITY;  #使用set把刚插入的id赋值给变量
    select LAST_INSERT_ID() into @user_ID; #把select结果赋值给变量, select 字段名 into 变量名 form 表名....
    insert into table_order (order_Uid,order_Owner) value(@user_ID, '我是触发器创建的');
end;
#在创建触发器的表里操作, 比如触发条件为插入.  然后在代码块里又插入. 简直作死, 报错删除触发器就好了