鱼C论坛

 找回密码
 立即注册
查看: 1681|回复: 7

[已解决]创建触发器

[复制链接]
发表于 2023-7-3 11:52:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
学校规定只能教务处(用户“user2”)才可以修改学生成绩表中的数据,普通教师用户(“user1”)不能随意修改学生成绩,否则输出“用户没有权限”。
创建触发器如下:

CREATE TRIGGER restrict_grade_update
BEFORE UPDATE
ON 学生成绩表
FOR EACH ROW
DECLARE
    allowed_user VARCHAR2(20) := 'user2';
BEGIN
    IF (USER != allowed_user)
    THEN
        RAISE_APPLICATION_ERROR(-20001, '用户没有权限');
    END IF;
END;

创建了一个名为restrict_grade_update的触发器。它会在每次更新学生成绩表之前执行。如果当前用户不是user2,则会抛出一个错误,
然后运行显示语法错误,T_T怎么改 啊
最佳答案
2023-7-3 11:53:19
根据你提供的信息,触发器的语法看起来是正确的。如果在创建触发器时出现了语法错误,可能是由于以下几个原因:

1. 数据库用户权限不足:请确保你有足够的权限创建触发器。只有具有足够权限的用户才能执行CREATE TRIGGER命令。

2. 数据库版本兼容性问题:触发器的语法可能与你所使用的数据库版本不兼容。请确认你正在使用与你的数据库版本相匹配的语法。

3. 表或字段不存在:如果在触发器中引用了不存在的表或字段,将导致语法错误。请确保学生成绩表及其相应的字段都存在。

如果你能提供更详细的错误信息或触发器创建时的具体命令,我可能可以给出更具体的帮助。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-7-3 12:00:06 | 显示全部楼层
isdkz 发表于 2023-7-3 11:53
我看你创建的触发器基本正确,只是有几个地方要注意。MySQL不支持 USER 关键字获取当前用户,你应该使用 CU ...

   在第九行: DECLARE current_user VARCHAR(20);
DECLARE下划曲线显示错误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-10-7 05:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表