【问题标题】:How can I create triggers in VoltDB using the C# client?如何使用 C# 客户端在 VoltDB 中创建触发器?
【发布时间】:2018-11-20 18:43:45
【问题描述】:

如何在 VoltDB 的存储过程中创建触发器?

我正在使用 C# VoltDB 客户端。 voltdb.procedures.wrap()中的回调和创建触发器一样吗?

【问题讨论】:

    标签: c# voltdb


    【解决方案1】:

    VoltDB 不支持传统触发器,但存储过程可以包含多个 SQL 语句和逻辑,如果满足某些条件,则允许事务通过。 voltdb.procedures.wrap() 中的回调是您可以对响应后发生的情况进行编码的地方。它可以作为所有意图和目的的“触发器”。

    全面披露:我在 VoltDB 工作。

    【讨论】:

    • 谢谢,安德鲁。您能否举一个示例或任何关于多个 SQL 语句的链接,例如一个场景,对于一个表中的每 10 行,需要在另一个表中插入“一些文本”。
    • 查看设计存储过程 (docs.voltdb.com/UsingVoltDB/DesignProc.php) 了解如何编写过程。此示例插入、选择,有时还会进行更多插入:github.com/VoltDB/voltdb/blob/master/examples/bank-offers/…
    • 对于“每 10 行”,您只需要小心确保过程是确定性的。这可以使用 VoltProcedure.getSeededRandomNumberGenerator() docs.voltdb.com/javadoc/procedure-api/org/voltdb/… 来完成,或者您可以使用 getUniqueId docs.voltdb.com/javadoc/procedure-api/org/voltdb/… 和一个 mod 函数来确定性地大约每 10 次执行一次。
    • 再次非常感谢 Andrew。正如我前面提到的,我使用的是 C# VoltDB 客户端,我找不到像 public final SQLStmt insertActivity = new SQLStmt("INSERT INTO XXXX VALUES ( ?,? ,?,?,?,?,?);") 但我可以使用 voltDB.Procedures.Wrap 和 Select.Execute() 插入、更新、更新插入和删除。关于场景,我正在插入表 X,每当计数达到 10 条记录(10、20、30、....等)时,我需要触发插入表 Y。请你帮我解决这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多