知识大全 数据库触发器和作业结合讲解

Posted

篇首语:贵有恒,何必三更起、五更眠、最无益,只怕一日曝、十日寒。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据库触发器和作业结合讲解相关的知识,希望对你有一定的参考价值。

  /* 作业处理实例

  根据sendTab的SendTime定制作业 并且在该作业完成时 可以自动删除作业 */

   示例

   测试表create table sendTab(ID int identity( ) Name varchar( )  SendTime datetime AcceptUnit varchar( )  SendUnit varchar( ) Content varchar( ))

  create table accepteTab(ID int identity( ) Name varchar( )  SendUnit varchar( ) AcceptUnit varchar( ) Content varchar( ))go

   创建处理的存储过程create proc p_JobSet@id int     要处理的sendTab的id@is_delete bit=   是否仅删除 为 则否 为 则是asdeclare @dbname sysname @jobname sysname  @date int @time int

  select @jobname= 定时发送作业_ +cast(@id as varchar)  @date=convert(varchar SendTime )  @time=replace(convert(varchar SendTime ) : )from sendTab where id=@id

  if exists(select from msdb sysjobs where name=@jobname) exec msdb sp_delete_job @job_name=@jobname

  if @is_delete= return

   创建作业exec msdb sp_add_job @job_name=@jobname @delete_level=

   创建作业步骤declare @sql varchar( )select @sql= insert accepteTab(name SendUnit AcceptUnit Content)  select name AcceptUnit SendUnit Content from sendTab where id=   +cast(@id as varchar)  @dbname=db_name()

  exec msdb sp_add_jobstep @job_name=@jobname  @step_name = 发送处理步骤  @subsystem = TSQL  @database_name=@dbname  @mand = @sql  @retry_attempts =    重试次数 @retry_interval =      重试间隔

   创建调度EXEC msdb sp_add_jobschedule @job_name = @jobname  @name = 时间安排  @enabled =  @freq_type =  @active_start_date = @date  @active_start_time = @time

   添加目标服务器EXEC msdb dbo sp_add_jobserver  @job_name = @jobname  @server_name = N (local) go

   创建处理的触发器(新增/修改)create trigger tr_insert_update on sendTabfor insert updateasdeclare @id intdeclare tb cursor local for select id from insertedopen tbfetch next from tb into @idwhile @@fetch_status= begin exec p_JobSet @id fetch next from tb into @idendclose tbdeallocate tbgo

   创建处理的触发器(删除)create trigger tr_delete on sendTabfor deleteasdeclare @id intdeclare tb cursor local for select id from deletedopen tbfetch next from tb into @idwhile @@fetch_status= begin exec p_JobSet @id  fetch next from tb into @idendclose tbdeallocate tbgo

   测试

   插入数据insert sendTabselect 文书 / / : : UnitA UnitB txt union all select 文书 / / : : UnitA UnitB txt union all select 文书 / / : : UnitA UnitB txt

   修改update sendTab set name= 档案 SendTime= / / : : where id=

cha138/Article/program/Oracle/201311/17542

相关参考

知识大全 Oracle数据库中有关触发器问题

Oracle数据库中有关触发器问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  触发器是一种特

知识大全 如何通过触发器实现数据库的即时同步

问题如何通过触发器实现数据库的即时同步?  解答具体的解决方法请参考下文  即时同步两个表的示例如下:    测试环境如下:SQLSever数据库远程主机名:xz用户名:sa密码:无数据库名:test

知识大全 关于触发器修改自身数据表实例

  前言  当然在触发器修改自身数据表对于有ORACLE数据库后台编程人员来说并不应该算是一个难题可能在平时的工作中就经常要遇到  但对于刚刚使用ORACLE数据库后台编程人员来说的确是一个比较烦人的

知识大全 数据库开发规范详细介绍[2]

    四其他设计  避免使用触发器  触发器的功能通常可以用其他方式实现在调试程序时触发器可能成为干扰假如确实需要采用触发器  要集中对它文档化  使用常用英语(或者其他任何语言)而不要使用编码  

知识大全 oracle触发器的语法详解

  触发器是一种特殊的存储过程下面是触发器的详细说明  ORACLE触发器  ORACLE产生数据库触发器的语法为  create[orreplace]trigger触发器名触发时间触发事件  on表

知识大全 oracleTrigger触发器的使用

oracleTrigger触发器的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  记录数据库

单元机组定义为触发事件的接点信号大致包括哪些?当发生这些触发事件时,数据采集系统应如何工作?

单元机组定义为触发事件的接点信号大致包括哪些?当发生这些触发事件时,数据采集系统应如何工作?参考答案:单元机组定义为触发事件的接点信号大致包括:总燃料跳闸(MFT)、锅炉跳闸、汽机跳闸、电气跳闸、控制

单元机组定义为触发事件的接点信号大致包括哪些?当发生这些触发事件时,数据采集系统应如何工作?

单元机组定义为触发事件的接点信号大致包括哪些?当发生这些触发事件时,数据采集系统应如何工作?参考答案:单元机组定义为触发事件的接点信号大致包括:总燃料跳闸(MFT)、锅炉跳闸、汽机跳闸、电气跳闸、控制

知识大全 讲解孤立用户和对象名无效问题的解决方法[2]

  方法二使登录用户和数据库的孤立用户对应起来  其实我们建立了同样名称的数据库登录用户后数据库中的表我们照样不能使用时因为sid的不同就是系统登录表和数据库用户表中的用户名相同单是sid字段数据库中

知识大全 讲解孤立用户和对象名无效问题的解决方法[1]

  在使用数据库的过程中经常会遇到数据库迁移或者数据迁移的问题或者有突然的数据库损坏这时需要从数据库的备份中直接恢复但是此时会出现问题这里说明几种常见问题的解决方法  一孤立用户的问题  比如以前的数