@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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)