Trigger Not 运行 检查是否正确?
Trigger Not Running Check Whether it is correct or not?
这是我的触发器,它 运行 在 whosebug.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
您的触发器查询有两个问题
问题 1. 您没有声明变量的大小
Declare @IsbnNumber varchar
不声明大小,默认为1
。所以分配给它的任何值都将被截断
问题 2。您假设 inserted
仅包含 1 行。根据插入语句
,哪个 infact 可能包含 0
到 N
所以你的声明没有处理那个
Select @IsbnNumber = ISBN_Number from inserted
你的触发器应该很简单
update b
set tbl_numberOfCopies = tbl_numberOfCopies - 1
from inserted i
inner join searchBooks b on b.tbl_IsbnBooks = i.ISBN_Number
您根本不需要 declare
触发器查询中的变量。
要回答关于 varchar
尺码的问题,您应该将其定义为
Declare @IsbnNumber varchar(10)
假设ISBNNumber
的大小是10
这是我的触发器,它 运行 在 whosebug.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
您的触发器查询有两个问题
问题 1. 您没有声明变量的大小
Declare @IsbnNumber varchar
不声明大小,默认为1
。所以分配给它的任何值都将被截断
问题 2。您假设 inserted
仅包含 1 行。根据插入语句
0
到 N
所以你的声明没有处理那个
Select @IsbnNumber = ISBN_Number from inserted
你的触发器应该很简单
update b
set tbl_numberOfCopies = tbl_numberOfCopies - 1
from inserted i
inner join searchBooks b on b.tbl_IsbnBooks = i.ISBN_Number
您根本不需要 declare
触发器查询中的变量。
要回答关于 varchar
尺码的问题,您应该将其定义为
Declare @IsbnNumber varchar(10)
假设ISBNNumber
的大小是10