I agree with mrdenny and that using a temp table may be the way to go. I have run into this exact same problem but it was with SQL 2000 not SQL Server 7. So if your situation requires that you must use a trigger, then you can try the steps I took. Keep in mind, however, they may not give you the same results.
The first thing I needed to do was update the registry settings (as per Microsoft knowledge base article 280106), but I had to adjust it slightly because of Oracle 9.
These are the settings I modified on the server:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI]
"OracleXaLib"="oraclient9.dll"
"OracleSqlLib"="orasql9.dll"
"OracleOciLib"="oci.dll"
Also you need to ensure that these DLLs are in the path as well. (I also had to have the machine rebooted before I was able to see the settings take effect.)
Second, I had to include the following line in my trigger:
SET XACT_ABORT ON
This statement specifies to SQL Server to automatically roll back the current transaction if the SQL statement raises a run-time error.
Good luck!