如何在sql server 2008

时间:2015-10-28 07:02:28

标签: sql-server-2008

亲爱的朋友们,我有一个表“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

0 个答案:

没有答案