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 可能包含 0N

所以你的声明没有处理那个

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