日期:2014-05-18  浏览次数:20627 次

问一个触发器的问题 参与有分
我在触发器中   创建了一个新表TABLE1  
接下来   要把这个“表名”   作为接下来执行的存储过程的参数

怎么解决这个问题呢   ?
谢谢

如果直接把执行存储过程的这句话写在   创建表的后面的话     出现死循环

 
在这两个事件中间应该作如何处理呢~

触发器语句如下
CREATE   trigger   skycn   on   water_updata
for   insert
as
if   exists   (select   *   from   water_hj.dbo.sysobjects   where   id   =   object_id(N '[dbo].[water_hj] ')   and   OBJECTPROPERTY(id,   N 'IsUserTable ')   =   1)
drop   table   water_hj.[dbo].[water_hj]
CREATE   TABLE   water_hj.[dbo].[water_hj]   (
[rdRecordedOn]   [datetime]   NOT   NULL   ,
[rdMeterID]   [int]   NOT   NULL   ,
[rdLastQty]   [numeric](18,   0)   NOT   NULL   ,
[rdCurrQty]   [numeric](18,   0)   NOT   NULL   ,
[rdQty]   [numeric](18,   0)   NOT   NULL   ,
                [rdWaterRate]   [money]   NOT   NULL   ,
[rdPollRate]   [money]   NOT   NULL   ,
[rdPayed]   [bit]   NULL   ,
                [rdAddRate]   [money]   NOT   NULL   ,
[Total]   [money]   NOT   NULL   ,
[InvoicedOn]   [datetime]   NOT   NULL  
)   ON   [PRIMARY]
exec   water_hj..P_SYS_DATAINOUT   'wlj ', 'water_hj ', 'water_hj ', ' ', 'F:\HJ499.TXT ', 'F:\hj499.TXT ', '2006-10-01 ', '2007-9-01 ', 'IN '

water_hj为创建的新表


------解决方案--------------------
你是不是存储过程中又调用了表water_update,这属于触发器递归调用,可以禁止递归
sp_dboption '库 ', 'recursive triggers ', 'false '
------解决方案--------------------
up
------解决方案--------------------
触发器递归问题
Alter Database 你的库名 Set Recursive_Triggers ON
Recursive_Triggers On | OFF
如果指定为ON,将允许递归激发触发器 Recursive_Triggers OFF(默认值)
只允许直接递归,若也要禁止间接递归.用
Sp_Configure 将Nested Triggers 服务器选项设置为0
------解决方案--------------------
在触发器里建表

这个做法有点问题,建议建一张临时表或者使用表变量
------解决方案--------------------
UP UP