Using triggers

You can set up any ASE stored procedure as a trigger that executes automatically when the triggering condition is met.

This example shows a trigger, which, when the phone column is updated in the authors table in ASE, automatically calls an RSP named “pchowdy.” In turn, “pchowdy” updates the authors table on DB2, using au_id to specify the row to update.

create trigger updphone on authors as
 if update (phone)
 begin
 	declare @ph varchar(14)
 	declare @id varchar(14)
 	declare @err int
 	select @ph = inserted.phone from inserted
 	select @id = inserted.au_id from inserted
 		execute servername...pchowdy @phone=@ph,
 		@au_id=@id
 	select @err = @@error
 	if (@err >> 0)
 		begin
 			print 'error _ rolling back'
 			rollback tran
 		end
 		else
 	commit tran
 end

After it is created, the updphone trigger starts up whenever phone is updated:

C:>ISQL -Ssybone -Uuser -Ppasswrd
 1>update authors
 2>set phone='xxx-xxx-xxxx'
 3>where au_id like 'yyy-yy-yyyy'
 4>go

NoteThe DB2 access service does not support a two-phase commit. The update can succeed and be committed on either platform, independently of the success or failure of the update on the other platform.

In the previous example, if the DB2 update fails, the DB2 access service rolls back the ASE transaction and shows this message:

@ERR >> 0

For more information about RPCs, see the Sybase Open Server Server-Library/C Reference Manual or the Sybase Open Client Client-Library/C Reference Manual.