为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:V8
【操作系统】:
【CPU】:
【问题描述】*:我在某个表中创建了一个表级触发器,我想让A用户执行增删改时能够触发触发器,但是B用户执行增删改时不触发该触发器
触发器体中可以加个判断
BEGIN
if (select user) = 'A' then
......
end if;
END;
在DM数据库中,触发器的执行不是基于用户的,而是基于事件的。所以你不能直接在触发器中设置只对某个用户有效。但你可以在触发器的代码中添加逻辑来检查当前的用户。
例如,你可以像下面这样创建一个触发器:
CREATE OR REPLACE TRIGGER trigger_name
AFTER INSERT OR UPDATE OR DELETE ON table_name
FOR EACH ROW
BEGIN
IF USER = 'A' THEN
-- 这里写你的触发器代码
END IF;
END;
这样,只有当用户是“A”时,触发器代码才会被执行。注意,这里的“USER”是一个特殊的系统变量,它总是返回当前的用户名。
触发器本身本身是无法实现的,可以尝试使用存储过程去控制,不过这种涉及到sql代码逻辑的最好全部放到应用层面去实现最好