Right now it is not possible to have two different transactions with same transaction ID although this collision had actually happen to the Coinbase Transaction (first transaction) but currently BIP 30 prevents a block from a transaction ID of an already existing transaction.
In theory, it's still possible that two transactions have the same ID.
According to BIP30, a block can't include a transaction with the same ID as a not-fully-spent transaction.
Blocks are not allowed to contain a transaction whose identifier matches that of an earlier, not-fully-spent transaction in the same chain.
Therefore, in the case all the outputs of a transaction have been spent, it's possible that in the future we will have a transaction with the same ID as that transaction.
Of course, it's very unlikely that two transactions have the same transaction ID, especially after implementing BIP34.
BIP30 mandated blocks to include the height (which is different for each block) in the coinbase script which means even if the coinbase of 2 blocks are exactly the same in everything else, they will be different in at least one place ergo have guaranteed different hashes.
That's BIP34, not BIP30.