在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
展开
 我来答
micro0369
2012-03-29 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4307万
展开全部
你的trigger 是建立在 库存表上的:

CREATE TRIGGER a
ON 库存

然后你又update 库存表:
update 库存

这样会引起循环(递归)的操作,导致无穷循环。
更多追问追答
追问
那我要怎么改?就是在库存表上改了一个数据之后,其他相应的数据要更新
追答
你这是什么数据库啊? sqlserver ?

是修改同一行的其他列吗 ?

把 这样的 语句
update 库存 set 剩余=数量总计-@test where 商品编号=(select [商品编号] from inserted)
换成这样的试试:
set inserted.剩余=inserted.数量总计-@test where inserted.商品编号=(select [商品编号] from inserted)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式