# Trigger Resetting in SQL Bridge Module

**URL:** <https://forum.inductiveautomation.com/t/trigger-resetting-in-sql-bridge-module/105984>\
**Category:** Ignition\
**Created:** [May 7, 2025, 3:09pm UTC](https://forum.inductiveautomation.com/t/trigger-resetting-in-sql-bridge-module/105984 "2025-05-07T15:09:45Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![pcryer](https://avatars.discourse-cdn.com/v4/letter/p/58f4c7/32.png) [@pcryer](https://forum.inductiveautomation.com/u/pcryer)\
**Post date:** [May 7, 2025, 3:09pm UTC](https://forum.inductiveautomation.com/t/trigger-resetting-in-sql-bridge-module/105984/1 "2025-05-07T15:09:45Z")

</div>

Im having an issue that i think may be related to tag polling but im not sure. I am trying to offload data from a plc to a sql database, we are generating roughly 40 rows per second. I have the logic setup on the plc side to set a trigger bit to tell ignition to create a new row based on particular tag data. Ignition writes a handshake integer to tell me its done, then i repeat the process with the next dataset in the buffer.  
The problem is that i cant get it to run at a reasonable speed. If i wait 1s or more between setting the trigger bit it works no problem, but when i try to make the transactions faster it freezes. The plc will have the trigger bit high but ignition never runs the transaction. I have tried this using transaction groups and just doing it all in scripting and im having the same issue.  
I have my tags set to poll every 50ms

---

<div class="post-metadata">

**Author:** ![ryan.white](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan.white/32/73193_2.png) [@ryan.white](https://forum.inductiveautomation.com/u/ryan.white)\
**Post date:** [May 7, 2025, 3:29pm UTC](https://forum.inductiveautomation.com/t/trigger-resetting-in-sql-bridge-module/105984/2 "2025-05-07T15:29:40Z")

</div>

> [@pcryer](#):
>
> I have my tags set to poll every 50ms

Look at your device status screen on the gateway. What is the overload factor on the 50ms poll group? I would bet money its more than 0%. Normally Ignition's drivers don't do well beyond 250ms, if you have pturmel's ethernet/IP driver, you can get to 100ms with work done on the PLC side for optimization.

Consider the approach outlined in this post:

> [@How to batch/buffer fast data before working with them](https://forum.inductiveautomation.com/t/how-to-batch-buffer-fast-data-before-working-with-them/104375/7):
>
> Code and data structures from PLC through SCADA to DB that hold critical information that simply cannot be allowed to fall into the bit bucket on the floor. Usually configured to hold in the PLC some small multiple of the maximum connection downtime that can be predicted for the overall system. Data is delivered, usually many pieces in parallel, through SCADA to the high-reliability database, where each piece of data gets a distinct handshake to the PLC after its insert transaction succeeds. …

It basically boils down to having a ring buffer in your PLC that stores enough data for x seconds of runtime and offloads in smaller chunks of y seconds at slower poll rate in Ignition. This does mean scripting the transaction instead of using the SQL bridge module.

---

<div class="post-metadata">

**Author:** ![Clancy\_Cavanaugh](https://avatars.discourse-cdn.com/v4/letter/c/45deac/32.png) [@Clancy\_Cavanaugh](https://forum.inductiveautomation.com/u/Clancy_Cavanaugh)\
**Post date:** [May 8, 2025, 2:07pm UTC](https://forum.inductiveautomation.com/t/trigger-resetting-in-sql-bridge-module/105984/3 "2025-05-08T14:07:51Z")

</div>

If you are using transaction groups, make sure you changed the timer in the action tag from the default of 1 second. From what I can tell, with it set to trigger on a tag, the transaction group will only check the trigger tag value at the rate of that timer. And if you have "Only execute once while trigger is active" checked then it will only trigger on a rising edge.

If you are having the issue in scripting, how are you monitoring the trigger? If you are using a tag value change script setup in the tag configuration, you should try moving it to gateway events.

I do agree with Ryan that this may be better to design in a buffer.

---

<div class="post-metadata">

**Author:** ![pturmel](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/pturmel/32/3295_2.png) [@pturmel](https://forum.inductiveautomation.com/u/pturmel)\
**Post date:** [May 8, 2025, 2:12pm UTC](https://forum.inductiveautomation.com/t/trigger-resetting-in-sql-bridge-module/105984/4 "2025-05-08T14:12:39Z")

</div>

40 rows per second is impractical in the SQL Bridge module. Not sure if you can even set its check interval below 100ms.

40 rows per second is very difficult for OPC connections to support in subscription mode, unless you only care about single values. (If you need to capture multiple values together, subscriptions cannot do it.)

I would not attempt an application like this without a ring buffer in the PLC.

---

<div class="post-metadata">

**Author:** ![pcryer](https://avatars.discourse-cdn.com/v4/letter/p/58f4c7/32.png) [@pcryer](https://forum.inductiveautomation.com/u/pcryer)\
**Post date:** [May 8, 2025, 3:31pm UTC](https://forum.inductiveautomation.com/t/trigger-resetting-in-sql-bridge-module/105984/5 "2025-05-08T15:31:29Z")

</div>

overload was at 3000% lol, i changed it to a ring buffer type architecture bulk copying everything in the buffer every 5 seconds. changed my subscription rate to 2.5s, now it runs no problem and no overload.  
I had to write it all in script however because i couldn't figure out how to dynamically change the block size in a block transaction group.  
thank you

---

<div class="post-metadata">

**Author:** ![ryan.white](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/ryan.white/32/73193_2.png) [@ryan.white](https://forum.inductiveautomation.com/u/ryan.white)\
**Post date:** [May 8, 2025, 3:41pm UTC](https://forum.inductiveautomation.com/t/trigger-resetting-in-sql-bridge-module/105984/6 "2025-05-08T15:41:05Z")

</div>

> [@pcryer](#):
>
> 3000% lol

That means your actual poll rate was closer to 1500ms

> [@pcryer](#):
>
> dynamically change the block size in a block transaction group.

You cannot do this, so scripting is the only option. Transaction groups are for fast drag and drop configuration with minimal(limited) handshaking. Anything with varying number of items or proper handshaking has to be done via script.
