亲爱的朋友们,我有一个表“terms_marks”,我们在其中创建一个触发器“trgcreatetotal”但是当我们更新表terms_marks中的特定列“SA1”时,它将给出以下错误。我已经完成了很多谷歌搜索。但我还没有找到解决方案。
“Msg 512,Level 16,State 1,Procedure trgcreatetotal,Line 11 子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。 声明已经终止。“
所以请任何人建议我们如何解决
感谢.........
database table
CREATE TABLE [dbo].[terms_marks](
[marksmaster_id_] [int] IDENTITY(1,1) NOT NULL,
[term_id] [int] NULL,
[st_id] [int] NULL,
[sub_id] [int] NULL,
[roll_no] [numeric](18, 0) NULL,
[admission_no] [numeric](18, 0) NULL,
[FA1] [int] NULL,
[FA2] [int] NULL,
[SA1] [int] NULL,
[Total_FirstTerm] [int] NULL,
[FA3] [int] NULL,
[FA4] [int] NULL,
[SA2] [int] NULL,
[Total_SecondTerm] [int] NULL,
[Total_FA] [int] NULL,
[Total_SA] [int] NULL,
[GrandTotal] [int] NULL,
[maxmarks] [int] NULL
)ON [PRIMARY]
在此处触发代码
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create trigger [dbo].[trgcreatetotal] on [dbo].[terms_marks]
AFTER UPDATE
AS
declare @std_id int;
IF UPDATE(SA1)
begin
SELECT @std_id = st_id
FROM inserted
UPDATE T
SET T.Total_FirstTerm= (select (FA1+FA2))
from terms_marks T
INNER JOIN INSERTED I ON T.st_id=I.st_id
WHERE T.Total_FirstTerm IS NULL
update terms_marks set Total_FirstTerm=(select(FA1+FA2))where st_id=@std_id
END
GO