【问题标题】:Trigger with query data使用查询数据触发
【发布时间】:2018-12-13 17:43:49
【问题描述】:

我有一张包含信息的表格:

INSERT INTO Transferencias
('Origem_Apostador_ID', 'Destino_Apostador_ID', 'Valor_Transferido')
VALUES
('1', '6', '200.00');

并且我需要获取值“200.00”并与另一个表中的数据相加,之后将该值插入到下面的表中:

INSERT INTO Conta
('Apostador_ID', 'Saldo', 'Qtd_Saque', 'Qtd_Deposito', 'Qtd_Transferencia')
VALUES
('1', '700.00', '0', '1', '0');

我不知道如何使用来自查询的数据来更新“Saldo”列。

【问题讨论】:

    标签: mysql sql triggers


    【解决方案1】:

    我不知道我是否正确理解了你的问题,但我认为你需要这样的东西:

    UPDATE Conta 
       SET Saldo = Saldo + (SELECT Valor_Transferido FROM Transferencias WHERE Origem_Apostador_ID = '1') 
     WHERE Apostador_ID = '1';
    

    如果您愿意,可以将此代码添加到某个触发器。您可以找到许多示例,让简单的触发器根据您的数据库完成工作。

    MYSQL 上的触发示例

    CREATE TRIGGER TRG_UPDATE_SALDO BEFORE INSERT ON Transferencias
    FOR EACH ROW
       BEGIN
           IF NEW.Valor_Transferido > 0 THEN
    
        --Increments the destination account
        UPDATE Conta 
           SET Saldo = Saldo + NEW.Valor_Transferido 
         WHERE Apostador_ID = NEW.Destino_Apostador_ID;
    
        --Subtracts the origin account
        UPDATE Conta 
           SET Saldo = Saldo - NEW.Valor_Transferido 
         WHERE Apostador_ID = NEW.Origem_Apostador_ID;
           END IF;
       END;
    

    【讨论】:

    • 差不多了,“WHERE Apostador_ID = '1';”我不知道 Apostador_ID 是什么,我需要动态获取此值,这就是为什么我不知道该怎么做。
    • 您可以在“Transferencias”表上创建一个插入触发器,该表将更新“Saldo”列上的“Conta”表。当您处于触发器的上下文中时,您知道记录 ID 和您可能使用的所有其他信息。以下是有关触发器 (mysql) 的一些文档的链接:dev.mysql.com/doc/refman/8.0/en/trigger-syntax.html 您可以在 Transferencias 触发器的上下文中将“Apostador_ID = '1'”更改为“Apostador_ID = NEW.Origem_Apostador_ID”。
    猜你喜欢
    • 2014-01-21
    • 2020-09-27
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 2017-03-29
    • 2012-11-16
    • 2016-09-27
    • 1970-01-01
    相关资源
    最近更新 更多