精华内容
下载资源
问答
  • 然后google,方法出现:有人也遇到了触发器执行动态sql的问题,然后发帖,后面高手解答说 把动态sql语句传入存储过程里,然后在触发器里调用存储过程就可以了。然后那位楼主还给了高手 70分(悲剧,后面说)...我想...

    这几天手头开发的系统要做一个类似windows账户到期时间的功能,考虑了半天想出了一个技术上和逻辑上都还能实现的解决方案:

    创建一个用户存入数据库的时候都创建一个事件调度器来控制用户的到期时间(mysql的时间调度器确实很方便)。想起来是很简单,但是做起来问题确实一波接一波...

    一些小问题就不说了,到了关键的地方了:在插入一个用户的时候我到底是在应用层来添加一个事件调度器呢还是在数据库里面自动添加。

    当然不管从代码的美观上、系统设计的思想上或是运行效率上来说,我都应该选择后者(废话...)。于是我就选择了后者(你敢再说废话吗)。那么就有了今天的这段笔记...

    一开始我兴致勃勃的拼好字符串什么的,写了如下一个触发器

    delimiter //

    create trigger tri_user after insert on user for each row

    begin

    set @u_name = new.u_name;

    set @expire = '';

    select sm_pwd_alter_day into @expire from system_manage where sm_id = 1;

    set @str = concat('create EVENT eve_', @u_name, ' ON SCHEDULE EVERY ', @expire, ' day DO

    update user set u_enable = /'未启用/' where u_name = /'', @u_name, '/'');

    prepare stmt_str from @str;

    execute stmt_str;

    DEALLOCATE PREPARE stmt_str;

    end;

    //

    delimiter ;

    仔细检查了语法,然后兴高采烈的运行...(orz)结果却是下面这行错误提示:

    “Dynamic SQL is not allowed in stored function or trigger”

    my god,原来mysql的触发器不支持动态sql,于是上网baidu寻找替代方法,无果,

    然后google,方法出现:有人也遇到了触发器里执行动态sql的问题,然后发帖,后面高手解答说

    把动态sql语句传入存储过程里,然后在触发器里调用存储过程就可以了。然后那位楼主还给了高手

    70分(悲剧,后面说)...我想这次到位了。于是模仿之、于是运行之、于是出现结果:

    “Dynamic SQL is not allowed in stored function or trigger”

    卧槽...还是这个结果...

    于是我明白了结了贴的也不一定是正确答案。

    那么我以为存储过程里运行动态sql,然后触发器再调用这个存储过程,还是相当于在触发器里运行动态sql。

    不想再去深究了,还是老老实实在应用程解决这个问题了。

    展开全文
  • 然后google,方法出现:有人也遇到了触发器执行动态sql的问题,然后发帖,后面高手解答说 把动态sql语句传入存储过程里,然后在触发器里调用存储过程就可以了。然后那位楼主还给了高手 70分(悲剧,后面说)...我想...

    这几天手头开发的系统要做一个类似windows账户到期时间的功能,考虑了半天想出了一个技术上和逻辑上都还能实现的解决方案:

    创建一个用户存入数据库的时候都创建一个事件调度器来控制用户的到期时间(mysql的时间调度器确实很方便)。想起来是很简单,但是做起来问题确实一波接一波...

    一些小问题就不说了,到了关键的地方了:在插入一个用户的时候我到底是在应用层来添加一个事件调度器呢还是在数据库里面自动添加。

    当然不管从代码的美观上、系统设计的思想上或是运行效率上来说,我都应该选择后者(废话...)。于是我就选择了后者(你敢再说废话吗)。那么就有了今天的这段笔记...

    一开始我兴致勃勃的拼好字符串什么的,写了如下一个触发器

    delimiter //

    create trigger tri_user after insert on user for each row

    begin

    set @u_name = new.u_name;

    set @expire = '';

    select sm_pwd_alter_day into @expire from system_manage where sm_id = 1;

    set @str = concat('create EVENT eve_', @u_name, ' ON SCHEDULE EVERY ', @expire, ' day DO

    update user set u_enable = /'未启用/' where u_name = /'', @u_name, '/'');

    prepare stmt_str from @str;

    execute stmt_str;

    DEALLOCATE PREPARE stmt_str;

    end;

    //

    delimiter ;

    仔细检查了语法,然后兴高采烈的运行...(orz)结果却是下面这行错误提示:

    “Dynamic SQL is not allowed in stored function or trigger”

    my god,原来mysql的触发器不支持动态sql,于是上网baidu寻找替代方法,无果,

    然后google,方法出现:有人也遇到了触发器里执行动态sql的问题,然后发帖,后面高手解答说

    把动态sql语句传入存储过程里,然后在触发器里调用存储过程就可以了。然后那位楼主还给了高手

    70分(悲剧,后面说)...我想这次到位了。于是模仿之、于是运行之、于是出现结果:

    “Dynamic SQL is not allowed in stored function or trigger”

    卧槽...还是这个结果...

    于是我明白了结了贴的也不一定是正确答案。

    那么我以为存储过程里运行动态sql,然后触发器再调用这个存储过程,还是相当于在触发器里运行动态sql。不想再去深究了,还是老老实实在应用程解决这个问题了。

    展开全文
  • 由于在触发器中要根据inserted(deleted)表的数据,对另一个表进行更新操作,而这个表的某些字段是不固定的,所以需要写成动态sql,利用exec来执行。这时麻烦来了,exec执行时,无法访问到inserted(deleted)表。坏了...
      这两天公司产品中要加个数据同步用的触发器,oracle版没什么问题,很顺利的写完了。
    

          在写sqlserver版时遇到了麻烦。由于在触发器中要根据inserted(deleted)表的数据,对另一个表进行更新操作,而这个表的某些字段是不固定的,所以需要写成动态sql,利用exec来执行。这时麻烦来了,exec执行时,无法访问到inserted(deleted)表。坏了,这该如何是好?

    经反复google+baidu+试验,问题总算解决了。总结一下,大致有以下两种方法:

     

          1、将inserted(deleted)表的数据放到临时表#temp,然后再来exec;

          2、用游标对inserted(deleted)表进行逐条处理。

     

    具体采用哪种,可根据业务特点来定,本人采用的是方法1。

     

    如果哪位还有别的好办法,请不要吝惜,留个言,好让更多的朋友学习一下。呵呵。

    展开全文
  • 然后google,方法出现:有人也遇到了触发器执行动态sql的问题,然后发帖,后面高手解答说 把动态sql语句传入存储过程里,然后在触发器里调用存储过程就可以了。然后那位楼主还给了高手 70分(悲剧,后面说)...我想...

    这几天手头开发的系统要做一个类似windows账户到期时间的功能,考虑了半天想出了一个技术上和逻辑上都还能实现的解决方案:

    创建一个用户存入数据库的时候都创建一个事件调度器来控制用户的到期时间(mysql的时间调度器确实很方便)。想起来是很简单,但是做起来问题确实一波接一波...

    一些小问题就不说了,到了关键的地方了:在插入一个用户的时候我到底是在应用层来添加一个事件调度器呢还是在数据库里面自动添加。

    当然不管从代码的美观上、系统设计的思想上或是运行效率上来说,我都应该选择后者(废话...)。于是我就选择了后者(你敢再说废话吗)。那么就有了今天的这段笔记...

    一开始我兴致勃勃的拼好字符串什么的,写了如下一个触发器

    delimiter //

    create trigger tri_user after insert on user for each row

    begin

    set @u_name = new.u_name;

    set @expire = '';

    select sm_pwd_alter_day into @expire from system_manage where sm_id

    = 1;

    set @str = concat('create EVENT eve_', @u_name, ' ON SCHEDULE EVERY

    ', @expire, ' day DO

    update user set u_enable = /'未启用/' where u_name = /'', @u_name,

    '/'');

    prepare stmt_str from @str;

    execute stmt_str;

    DEALLOCATE PREPARE stmt_str;

    end;

    //

    delimiter ;

    仔细检查了语法,然后兴高采烈的运行...(orz)结果却是下面这行错误提示:

    “Dynamic SQL is not allowed in stored function or trigger”

    my god,原来mysql的触发器不支持动态sql,于是上网baidu寻找替代方法,无果,

    然后google,方法出现:有人也遇到了触发器里执行动态sql的问题,然后发帖,后面高手解答说

    把动态sql语句传入存储过程里,然后在触发器里调用存储过程就可以了。然后那位楼主还给了高手

    70分(悲剧,后面说)...我想这次到位了。于是模仿之、于是运行之、于是出现结果:

    “Dynamic SQL is not allowed in stored function or trigger”

    卧槽...还是这个结果...

    于是我明白了结了贴的也不一定是正确答案。

    那么我以为存储过程里运行动态sql,然后触发器再调用这个存储过程,还是相当于在触发器里运行动态sql。

    不想再去深究了,还是老老实实在应用程解决这个问题了。

    展开全文
  • --[b][color=#FF0000]这里如何实现动态加载修改前,修改后值不一致的列名,插入到TRIGGER_DEMO表[/color][/b] /*set @ss1=concat('new','.',colVal); set @ss2=concat('old','.',colVal); set @ss='...
  • 关于mysql中触发器执行动态sql的问题

    千次阅读 2009-10-26 15:55:00
    然后google,方法出现:有人也遇到了触发器执行动态sql的问题,然后发帖,后面高手解答说 把动态sql语句传入存储过程里,然后在触发器里调用存储过程就可以了。然后那位楼主还给了高手 70分(悲剧,后面说)....
  • 最近项目在用quartz去定时执行一些方法,这些时间都是动态的,而且还要去动态的去修改这些触发的时间,但是网上资料不全,这里写了个案例希望可以帮到大家,包呢得靠大家自己下载了,我这里用的包是quartz官网上下载...
  • 动态执行sql语句 declare v_sql varchar2(100); v_ename varchar2(50); begin v_sql:='select ename from emp where empno=7788'; execute immediate v_sql into v_ename; dbms_output.put_line(' '); end;
  • 行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。对其中所引用的基础表来说,视图的作用类似于筛选。定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询...
  • 动态执行sql demo: delimiter $$DROP PROCEDURE IF EXISTSproc_sql $$CREATE PROCEDUREproc_sql (in str_sql char(100),in cid int(5) )BEGIN set @strsql =str_sql;set @cid =cid;PREPARE prod FROM @strsql;...
  • 只是为了区分,并不属于sql语句什么是触发器(Trigger):如果想要在某些语句在事件发生前/后自动执行,那么就需要触发器,例如学生每选一门课,就让该同学选修课程的门数+1,或者在更新员工工资之前检查该员工工资...
  • 视图视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,并可以将其当作表来使用。创建视图:createviewv1asselect*...
  • 视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,并可以将其当作表来使用。 创建视图: 1 2 createviewv1as select*...
  • 视图视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,并可以将其当作表来使用。创建视图:createviewv1asselect*...
  • 视图视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,并可以将其当作表来使用。创建视图:今后可以直接通过:删除视图:修改视图:...
  • (5)动态执行SQL(防止SQL注入,在数据库级别,在程序端也可以防止sql注入,文章 Pymysql连接mysql ) delimiter // create procedure p7( in tpl varchar(255), in arg int ) begin -- 1. 预检测某个东西...
  • 6. 动态执行SQL(防SQL注入) delimiter// create procedurep7(in tpl varchar(255),in arg int)begin 1. 预检测某个东西 SQL语句合法性2. SQL =格式化 tpl +arg3. 执行SQL语句set @xo =arg;PREPARE xxx FROM 'select ...
  • 我正在通过准备语句在我的过程中执行其他动态构造的查询,但是当我尝试相同的方法来创建触发器时,我得到以下错误:ERROR Code: 1295This command is not supported in the prepared statement protocol yet这个问题有...
  • 固定格式 pymysql的执行过程 四 、 触发器 对某个表进行【增/删/改】操作的前后如果希望触发某个特定的行为时,可以使用触发器触发器用于定制用户对表的行进行【增/删/改】前后的行为。 1、创建基本语法 # 插入前...
  • 问题如标题:SQL 触发器调用存储过程(建表)后再执行动态语句报错 报错信息: 消息 3970,级别 16,状态 2,第 1 行 此操作与此事务上的另一个挂起操作冲突。此操作失败。 经过查看出错地方为节点1和节点2...
  • PREPARE statement_name FROM sql_text /*定义*/  EXECUTE statement_name [USING variable [,variable...]] /*执行预处理语句*/  DEALLOCATE PREPARE statement_name /*删除定义*/
  • --可以理解为一个特殊的存储过程,在某一个动作执行的时候,自动执行,而不需要人手动执行 --触发器的分类 --1.DML触发器 --insert,delete,update(不支持select) --after触发器,instead of 触发器(相当于其他数据库的...
  • 用户在执行insert,update, ... 编一dll,这个dll负责把变化的数据用socket传到另一台机器上去,然后在触发器中调用这个dll,调用的方法和dll的范例在这里: 在存储过程中调用外部的动态连接库(ms sql server7.0...
  • 今天遇见一个很神奇的问题,ERP合同系统需要记录登录oracle数据库的用户名、IP地址、登录时间、登录客户端类型记录信息,需要创建个触发器, 在触发器中需要查询v$session视图,如下所示: creat...
  • 我把想变化的数据用socket传到另一台机器上去,数据库的触发器中如何执行socket操作? 编一dll,这个dll负责把变化的数据用socket传到另一台机器上去,然后在触发器中调用这个dll,调用的方法和dll的范例在这里: ...
  • 来自:FreeBuf.COM作者:secist链接:https://www.freebuf.com/sectool/212820.htmlSampler是一个...你可以直接从终端对任意动态进程进行采样 – 观察数据库中的更改,监控MQ动态消息(in-flight messages),触发部署...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 536
精华内容 214
关键字:

触发器动态执行