SQL - 计算列/触发器?

时间:2018-01-22 15:42:27

标签: sql

我创建了两个表:

在第一个表中,我想将计算结果存储在第3列

Table 1

num1|num2|num3

我希望每次更新后都有num3 = num1+num2,插入,删除

我的第二张表是百分比计算,类似于心愿单

Table 2 

value|stored|left

我希望left = stored/value,即。存储金额占项目价值的百分比。

如何在升级,插入,删除时将这些值设置为计算?

原始

我创建了两个表格,在第一个表格中我尝试将结果存储在3< rd列ex:my tabel structure num1 | num2 | num3

其中num3 = num1 + num2,每次更新后,插入,删除

第二个表格用于计算百分比,类似于心愿单结构:值,存储,左侧

其中value =你要购买的对象的价值,ex 1250存储的是为你的愿望保存的ammount是留下来实现你的目标的百分比

像第一个表格一样的问题

2 个答案:

答案 0 :(得分:0)

如果在设置num3之前将num1和num2值存储在变量中会更好。除非您在前两列中首先执行 INSERT ,然后在num3列上执行 UPDATE

有时数据库没有设置为自动提交,因此您需要强制它,然后重用这些值。

答案 1 :(得分:0)

创建trigger将有助于在insertupdate表后帮助update列更新您的表格,假设您在表格中有ID列

CREATE TRIGGER Insert_Update ON mytable
AFTER INSERT, UPDATE
AS
BEGIN
    SET NOCOUNT ON;

    IF 
        UPDATE (num3)

    BEGIN
        UPDATE dbo.Mytable
        SET num3 = i.num1 + i.num2
        FROM inserted i
        INNER JOIN mytable t ON i.MyID = t.MyID
        LEFT JOIN deleted d ON i.MyID = d.MyID
        WHERE d.MyID IS NULL AND i.ColumnB IS NOT NULL -- Row was inserted
            OR d.MyID IS NOT NULL -- Row was updated
    END
END
GO