
在vb中修改数据库表中的数据时说超过存储过程,函数,触发器或者视图的最大层数,怎么解决
代码是这样的:CREATETRIGGERaON库存FORINSERT,UPDATE,DELETEASdeclare@testintegerset@test=(select...
代码是这样的:
CREATE TRIGGER a
ON 库存
FOR INSERT, UPDATE, DELETE
AS
declare @test integer
set @test=(select [已售] from inserted)
update 库存 set 剩余=数量总计-@test where 商品编号=(select [商品编号] from inserted)
GO
/*在库存创建触发器,使得数量更改的时候,价格自动更改*/
CREATE TRIGGER c
ON 库存
FOR INSERT, UPDATE, DELETE
AS
declare @test integer
set @test=(select [已售] from inserted)
update 库存 set 销售总额=@test*单价 where 商品编号=(select [商品编号] from inserted)
go
CREATE TRIGGER b
ON 库存
FOR INSERT, UPDATE, DELETE
AS
declare @test integer
set @test=(select [已售] from inserted)
update 库存 set 剩余总额=(数量总计-@test)*成本 where 商品编号=(select [商品编号] from inserted)
go 展开
CREATE TRIGGER a
ON 库存
FOR INSERT, UPDATE, DELETE
AS
declare @test integer
set @test=(select [已售] from inserted)
update 库存 set 剩余=数量总计-@test where 商品编号=(select [商品编号] from inserted)
GO
/*在库存创建触发器,使得数量更改的时候,价格自动更改*/
CREATE TRIGGER c
ON 库存
FOR INSERT, UPDATE, DELETE
AS
declare @test integer
set @test=(select [已售] from inserted)
update 库存 set 销售总额=@test*单价 where 商品编号=(select [商品编号] from inserted)
go
CREATE TRIGGER b
ON 库存
FOR INSERT, UPDATE, DELETE
AS
declare @test integer
set @test=(select [已售] from inserted)
update 库存 set 剩余总额=(数量总计-@test)*成本 where 商品编号=(select [商品编号] from inserted)
go 展开
1个回答
展开全部
你的trigger 是建立在 库存表上的:
CREATE TRIGGER a
ON 库存
然后你又update 库存表:
update 库存
这样会引起循环(递归)的操作,导致无穷循环。
CREATE TRIGGER a
ON 库存
然后你又update 库存表:
update 库存
这样会引起循环(递归)的操作,导致无穷循环。
更多追问追答
追问
那我要怎么改?就是在库存表上改了一个数据之后,其他相应的数据要更新
追答
你这是什么数据库啊? sqlserver ?
是修改同一行的其他列吗 ?
把 这样的 语句
update 库存 set 剩余=数量总计-@test where 商品编号=(select [商品编号] from inserted)
换成这样的试试:
set inserted.剩余=inserted.数量总计-@test where inserted.商品编号=(select [商品编号] from inserted)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询