> On 30 Jul 2024, at 17:16, sud <suds1434@gmail.com> wrote:
>
> Hello,
>
> We have a streaming application (using apache flink and kafka) which populates data in the tables of a postgres
databaseversion 15.4.
>
> Now while loading transactions data we also get some reference data information from source (for example customer
information)and for these , we dont want to modify or override the existing customer data but want to keep the old data
witha flag as inactive and the new record should get inserted with flag as active. So for such use case , should we
caterthis inside the apache flink application code or should we handle this using trigger on the table level which will
executeon each INSERT and execute this logic?
>
> I understand trigger is difficult to debug and monitor stuff. But here in this case , team mates is saying , we
shouldn'tput such code logic into a streaming application code so should rather handle through trigger.
Is your data consistent if this operation doesn’t happen correctly? Is it okay to have no, or multiple, records where
theflag is active for the same application transaction?
The benefit of doing this in a trigger is that the operations happen in a single database transaction, guaranteeing
thatthere is only ever a single row that has the active flag set for every application transaction.
There are other ways to guarantee that, using exclusion constraints (which you should probably have on this table
anyway),which would allow to handle such in the application. Such constraints can raise exceptions in your code, that
needhandling.
So I say, at least put an exclusion constraint on that table if you didn’t already, and then decide what approach suits
youbest.
Alban Hertroys
--
Als je de draak wilt steken met iemand,
dan helpt het,
als die een punthoofd heeft.