0
我知道這不是一種方法,但它是一個面試問題觸發器更新列的總和?
使用觸發器更新total = marks1 + marks2 + marks3。
我寫了類似這樣的內容,但是它並沒有在插入語句後更新。
CREATE table marks
(
marks1 int,
marks2 int,
marks3 int,
total int
)
SELECT * from marks m
insert into marks values(10,10,20,0)
drop TRIGGER total_marks
create TRIGGER total_marks ON marks
AFTER INSERT
AS
begin
SET NOCOUNT ON
DECLARE @marks1 as int
select @marks1 = inserted.marks1 FROM inserted
DECLARE @marks2 as int
select @marks1 = inserted.marks2 FROM inserted
DECLARE @marks3 as int
select @marks1 = inserted.marks3 FROM inserted
DECLARE @result as int
set @result = @marks1 + @marks2 + @marks3
update marks
set total = @result
SET NOCOUNT OFF
end
'插入後,更新'請參閱http://stackoverflow.com/questions/7528899/after-insert-update-timestamp-trigger-with-two-column-primary-key – xQbert
您的觸發器不處理多個行插入,將* all *行更新爲相同的值(而不僅僅是插入的行),並且遠遠超過必要的複雜度。你的鑰匙在哪裏? –
除了其他問題,爲所有三個標記選擇「@ marks1」可能沒有幫助。至少你爲其他兩個標記聲明變量,即使它們從未初始化過。 – HABO