does an ExternalSQL table runs the Insert Trigger or any Event when it was inserted from outside the application? Or how can i recognize when a record was inserted?
Hi, you should never write to NAV directly. For example use another DB (own-created) and some event generator (task scheduler, SQL OnInsert trigger invoking NAV webservice handler).
You have no idea what ExternalSQL is, have you?
@Lgoo No, if something gets inserted from outside no Trigger or Event is called. But its advantage of ExternalSQL that it is in the transaction control. So you can set i.e. a marker for new records and change this marker as soon as you handled this record inside NAV. If the transaction in NAV breaks even the changes on the ExternalSQL table are rolled back.
Hi, you should never write to NAV directly. For example use another DB (own-created) and some event generator (task scheduler, SQL OnInsert trigger invoking NAV webservice handler).
Hi, you should never write to NAV directly. For example use another DB (own-created) and some event generator (task scheduler, SQL OnInsert trigger invoking NAV webservice handler).
You have no idea what ExternalSQL is, have you?
@Lgoo No, if something gets inserted from outside no Trigger or Event is called. But its advantage of ExternalSQL that it is in the transaction control. So you can set i.e. a marker for new records and change this marker as soon as you handled this record inside NAV. If the transaction in NAV breaks even the changes on the ExternalSQL table are rolled back.
Now I have - former LinkedObject.
But still he should use some kind of handler (scheduler, WS). Also it is not necessary to use markers - using timestamps are imho better and don't need bidirectionality ...
Thanks for your answer. LinkedObject is still available and something different. My aim was to insert a Job Que Entry when a insert in the ExternalSQL was done and run the scheduler directly. So the Job Queue dont has to check every minute for new records. But unfortunately there is no other solution...
NAV 2017 uses TaskScheduler to handle Job queues. There is a table $ndo$taskscheduling which handles that.
You could try to create a job queue entry in NAV and add a trigger to your table connected via ExternalSQL to modify the state field to release your job. It is nowhere near of having a trigger or an event fired in NAV, as I guess, if it works at all, there still be some delay before scheduler pick up released job,
Answers
xStepa
@Lgoo No, if something gets inserted from outside no Trigger or Event is called. But its advantage of ExternalSQL that it is in the transaction control. So you can set i.e. a marker for new records and change this marker as soon as you handled this record inside NAV. If the transaction in NAV breaks even the changes on the ExternalSQL table are rolled back.
But still he should use some kind of handler (scheduler, WS). Also it is not necessary to use markers - using timestamps are imho better and don't need bidirectionality ...
Thx Tim82
xStepa
You could try to create a job queue entry in NAV and add a trigger to your table connected via ExternalSQL to modify the state field to release your job. It is nowhere near of having a trigger or an event fired in NAV, as I guess, if it works at all, there still be some delay before scheduler pick up released job,
Just a thought..
Slawek
Dynamics NAV, MS SQL Server, Wherescape RED;
PRINCE2 Practitioner - License GR657010572SG
GDPR Certified Data Protection Officer - PECB License DPCDPO1025070-2018-03