【发布时间】:2021-07-02 22:47:50
【问题描述】:
这是我的触发器,它在 stackoverflow.com 的帮助下完美运行。由于阻塞,我编辑了我的问题。
USE [Online Medical Store]
GO
/****** Object: Trigger [dbo].[tr_issueBook] Script Date: 4/7/2021 11:33:13 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Trigger [dbo].[tr_issueBook]
on [dbo].[IssueBooks]
for insert
AS
Begin
Declare @IsbnNumber varchar
Select @IsbnNumber = ISBN_Number from inserted
update searchBooks set
tbl_numberOfCopies =tbl_numberOfCopies - 1
where tbl_IsbnBooks = @IsbnNumber
End
【问题讨论】:
-
你怎么知道它没有运行?您犯了经典的触发器 101 错误:假设
Inserted伪表只有一行,而实际上它可以有 0-N 并且必须相应地处理。 -
Declare @IsbnNumber varchar- 例如,您没有声明varchar的大小应该是varchar(10) -
@DaleK 我没明白你的意思吗?
-
@Squirrel 我声明尺寸的地方
-
触发触发器时,可能会插入 1 或 10 行。所以
inserted可能包含多于 1 行。您的触发器查询没有处理这个问题。
标签: sql sql-server tsql triggers