The following trigger requests data from sql server and updates a MYSQL table on another server. The code works and the data is updated, but it nevertheless returns an error:
"Msg 3609, Level 16, State 1, Line 2
The transaction ended in the trigger. The batch has been aborted."
I've searched and searched on the internet, trying a few different things but nothing seems to work. Your help is greatly appreciated.
ALTER TRIGGER [dbo].[DXPagerUpdate]
ON [dbo].[ip_PagerProgramming]
AFTER UPDATE, INSERT
NOT FOR REPLICATION
AS
BEGIN
DECLARE @empid varchar(20);
DECLARE @capcode01 varchar(20);
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Get values from virtual INSERTED table to populate MySQL
SELECT @empid = empid, @capcode01 = capcode01 FROM INSERTED
-- Get values from EMPMAST to populate MySQL database
DECLARE @fname varchar(20);
DECLARE @lname varchar(20);
DECLARE @email varchar(40);
DECLARE @unit varchar (40);
SELECT @fname = fname, @lname = lname, @email = email, @unit = unit
FROM EMPMAST
WHERE empid = @empid
COMMIT TRANSACTION
UPDATE MYSQL...pagers
SET capcode = @capcode01
WHERE pager = @empid
IF @@ROWCOUNT = 0
Insert into MYSQL...pagers (pager, valid, capcode, divert,
ptype, fn, netid, [repeat], numpages, list, fname, lname,
department, email, email2, preset1, preset2, preset3,
preset4, preset5, calls, dbase)
Values (@empid, 'Valid', @capcode01, '', 'Pocsag Alpha 1200' ,
1, 'None', NULL, 0, 'Yes', @fname, @lname, @unit,
@email, '', '', '', '', '', '', NULL, 'ECSO' )
END