sql >> Databasteknik >  >> RDS >> PostgreSQL

Ställa in tidsstämpel inuti transaktionen

Detta typ av fråga dyker upp då och då-- så vitt jag kan säga är det enda helt pålitliga sättet att göra det du har beskrivit, lagra uppdaterade ID:n i någon tabell i den första processen och markera dem som bearbetade i den andra. I grund och botten är detta att återuppfinna en meddelandekö i databasen. Du har beskrivit ganska bra hur en naiv lösning kommer att missa uppdateringar.

Att låta importprocessen markera uppdaterade rader kan göras ganska enkelt, eller till och med implementeras med hjälp av triggers i din datatabell. Om du bara har en konsumentprocess behöver du bara delete from updated_item returning item_id för att få en lista över uppdateringar. Det låter som att det är mycket mer komplicerat men IMHO är det inte, verkligen. Funktioner som att kunna övervaka hur stor eftersläpningen är dyker också upp gratis.



  1. En procedur för att vända en sträng i PL/SQL

  2. Finns det MySQL som motsvarar Oracles TIMESTAMP WITH TIME ZONE?

  3. Typer i MySQL:BigInt(20) vs Int(20)

  4. Varför inte inaktivera ONLY_FULL_GROUP_BY