Follow scenario: The balance of my origin address is 1 BTC. I'm transfering 0.1 BTC to a shop where I'm buying some goods, my wallet returns the change to my origin address. Now my origin address has a balance of 0.9 BTC. I buy another 0.1 BTC on an exchange and transfer it to my origin address, which now has again a balance of 1 BTC (as much as it had at the beginning).
As far as I understood a transaction is a block of data containing the transaction's details and a signature generated with my private key. If I redo the first transaction to the shop the data block created will look binary identical (same amount, same origin, same receivers), and also the balance of the origin is high enough.
What hinders someone else to resend my transaction in the blockchain network, or a miner to duplicate my transaction, as soon as the balance has refreshed to a value high enough to fulfill the transaction. I'm still missing a hint what invalidates a transaction after it was confirmed.
If I never use a bitcoin address twice, I would be safe.
I am very grateful for any tip what I might have overlooked!