读书人

问一个触发器的有关问题 参与有分

发布时间: 2012-02-01 16:58:19 作者: rapoo

问一个触发器的问题 参与有分
我在触发器中 创建了一个新表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

读书人网 >SQL Server

热点推荐