触发器没有执行

时间:2016-05-12 08:37:26

标签: sql sql-server sql-server-2008 triggers database-trigger

我写了一个简单的触发器:

CREATE TRIGGER test_tr 
ON bi_test_tr
AFTER INSERT, UPDATE, DELETE
AS
BEGIN  
    INSERT INTO test (datechange, sum1, sum2, sum3) 
        SELECT 
            GETDATE(), SUM([filed1]), SUM([filed2]), SUM([filed3])
        FROM bi_test_tr 
END
GO

触发器应将3列(filed1,filed2,filed3)的总和插入到具有当前日期的表test中。

但是当我将新数据集上传到bi_test_tr时,test中没有插入任何内容。

你知道为什么吗?

2 个答案:

答案 0 :(得分:1)

我刚用以下代码测试了您的代码:

2016-05-12 12:03:09.253    1    1   1
2016-05-12 12:03:09.287    3    3   3
2016-05-12 12:03:09.307    6    6   6
2016-05-12 12:03:09.307   10    10  10
2016-05-12 12:03:09.310   15    15  15

得到了预期的结果:

<script>
    function testSubmit()
    {
        var x = document.forms["myForm"]["input1"];
        var y = document.forms["myForm"]["input2"];
        if (x.value === "")
        {
            alert(' fill!!');
            return false;
        } Blockquote
        if(y.value === "")
        {
            alert('plz fill the!!');
            return false;
        }
        return true;
    }
    function submitForm()
    {
        if (testSubmit())
        {
            document.forms["myForm"].submit(); //first submit
            document.forms["myForm"].reset(); //and then reset the form values
        }
    } </script> <body>
    <form method="get" name="myForm">

        First Name: <input type="text" name="input1"/>
        <br/>
        Last Name: <input type="text" name="input2"/>
        <br/>
        <input type="button" value="Submit" onclick="submitForm()"/>
    </form>

</body>

除非我遗漏了什么?

答案 1 :(得分:0)

我认为你应该首先选择,然后选择插入。但我不确定,但你应该这样做

select getdate(), sum([field1]), sum([field2]), sum([field3]) into var1, var2, var3;

必须首先声明这3个变量。 最后,您只需要插入这些变量。

同样,我不确定,但你可以尝试:)