我的触发器出了问题:它不会识别我的表,它存储了我需要数据的计算列。
我的问题在于In_Months列,我的触发器的一部分如下所示:
CREATE TRIGGER [Balance_monthly]
ON [dbo].[Balance]
FOR INSERT, UPDATE
AS
BEGIN
DECLARE @test int;
DECLARE @amount int;
SET NOCOUNT ON
IF Balance.In_Months % 12 = 0
SET @amount = 3;
它不允许我更新我的触发器,因为它找不到我的表。
答案 0 :(得分:1)
这是指向正确的方向。它没有给出有用的答案,只是一个有效的答案。它只是演示了触发器的工作原理。
似乎你想估计一些插入的数据。但是,可以插入或更新多行。
创建测试表:
CREATE table balance(in_months int)
创建触发器。我为In_Months可以除以12的每行选择3
CREATE TRIGGER [Balance_monthly]
ON [dbo].[Balance]
FOR INSERT, UPDATE
AS
BEGIN
DECLARE @amount int;
SET NOCOUNT ON
SELECT @amount= sum(case when INSERTED.In_Months % 12 = 0 then 3 else 0 end)
FROM INSERTED
SELECT @amount
END
插入表格以激活触发器:
INSERT balance(In_Months) values(12),(13),(24)
结果为6(3 * 2),因为插入值中的2个(12和24)可以除以12
答案 1 :(得分:-1)
使用alter
ALTER TRIGGER [Balance_monthly] ON [dbo].[Balance]
FOR INSERT, UPDATE
AS
BEGIN
DECLARE @test int;
DECLARE @amount int;
SET NOCOUNT ON
IF In_Months % 12 = 0
SET @amount = 3;