Weil die Fremdsoftware nur mit a) SQL-Server und b) nur mit Tabellen umgehen kann.
Daher die Idee, auf dem SQL-Server die AS/400-View als View auf dem SQL-Server bereitzustellen.
Zusätzlich will die Fremdsoftware übernommene Aufträge aus der Tabelle löschen, einen Status setzen kann sie nicht, wenn der Auftrag dann erledigt ist, wird die Info in eine Statustabelle geschrieben.
Somit kann ich per Instead-Of auf dem SQL-Server bei Delete einfach ein Abgeholt-Flag setzen, dass den Satz aus der View ausblendet und beim Insert das Erledigtflag.
Nur leider wird eben beim Delete auf die View durch die Where-Klausel der Satz erst gelesen und gesperrt, so dass ein Update auf der AS/400 nicht mehr möglich ist.
Und beim Insert wird eine Distributed Transaction verlangt, beim Delete komischerweise nicht, sonst würde die AS/400-Prozedur ja nicht aufgerufen.
Wie gesagt, über einen Dauerjob wird nun alles alle 5 Sekunden synchronisiert.