mysql 触发器 if语句用法

mysql 触发器 if语句用法,第1张

mysql 触发器 if语句用法

@sqlz ='select asd from flkg'

EXECUTE(@sqlz)

----------

首先,mysql下动态语句不是这样写的,另外,触发器里不能允许返回结果集的.

这里我是希望他能中断更新!

CREATE PROCEDURE 学生成绩统计分析

@学号 Char(10)

AS

(insert into 学生学习状况(学号,姓名,平均总评成绩,评价)

select 学生.学号,姓名, convert(decimal(5,2), avg(convert(decimal(5,2), 总评成绩))) as 平均总评成绩,

评价=

case

when convert(decimal(5,2), avg(convert(decimal(5,2), 总评成绩))) >= 90 then ’优秀’

when convert(decimal(5,2), avg(convert(decimal(5,2), 总评成绩))) <60 then ’较差’

else ’一般’

end

)

from 学生 inner join 成绩 on 学生.学号 = 成绩.学号

where 学生.学号 = @学号

group by 学生.学号, 姓名

②若平均总评成绩在90分以上,则查询出该学生总评成绩>=90的课程,并添加到表“优秀课程”表中(其kID列为自动赋值)。

if ((select convert(decimal(5,2), avg(convert(decimal(5,2), 总评成绩))) from 成绩 where 学号=@学号) >= 90)

begin

insert into 优秀课程(学号,课程名称,总评成绩)

select 成绩.学号, 课程名称,总评成绩

from 成绩 join 课程 on 成绩.课程代码=课程.课程代码

where 成绩.学号 = @学号 and 总评成绩>=90

end

③若平均总评成绩在60分以下,则查询出该学生总评成绩<60的课程,并添加到表“不及格课程”表中(其kID列为自动赋值)。if ((select convert(decimal(5,2), avgif if ((select convert(decimal(5,2), avg(convert(decimal(5,2), 总评成绩))) from 成绩 where 学号=@学号) <60)

begin

insert into 不及格课程(学号,课程名称,总评成绩)

select 成绩.学号, 课程名称,总评成绩

from 成绩 join 课程 on 成绩.课程代码=课程.课程代码

where 成绩.学号 = @学号 and 总评成绩<60

end

mysql用触发器禁止某条记录的删除、修改:

delimiter //

CREATE TRIGGER xx_company_agent_update  BEFORE UPDATE ON xx_company_agent

FOR EACH ROW

BEGIN

IF OLD.bank_card is not null THEN

SET NEW.bank_card = OLD.bank_card,NEW.money= OLD.money,NEW.real_money=OLD.real_money,NEW.bank_name=OLD.bank_name

END IF

END//

delimiter

扩展资料

mysql触发器的使用

用户记录用户的预期事件(schema是特殊用户的数据库对象集合。这些对象包括:表,索引,视图,存储程序等。在Oracle里, schema要求创建一个用户。但是也可以创建一个没有schema的用户(根本没有对象)。

所以在Oracle-中,用户就是一个帐户而schema就是对象。可能在其他的数据库平台上可以创建一个没有用户的schema。LOGOFF不能是AFTER LOGOFF,将会重新 *** 作,这里应该是BEFORE,否则就会报错:替换可以插入不能有AFTER。创建或替换触发器MYLOGOFFTRIGGER。

参考资料来源:百度百科—mySQL


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7547439.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-07
下一篇 2023-04-07

发表评论

登录后才能评论

评论列表(0条)

保存