Dennis,


Notice the following paragraph in my original reply:
At 10:21 AM 6/26/2003
Ref: Re: After triggers - Razzak's Reply

==========
"The new triggers can be created by the CREATE TABLE
command or by the ALTER TABLE command. When you use
the ALTER TABLE command you must define the insert
triggers in the same command. The same goes for update
and delete. Do not use one alter table command to add
the "BEFORE" insert trigger and then another alter
table to add the "AFTER" trigger. Do them both in the
same command. When you drop a trigger, you do not
specify the "BEFORE" or "AFTER" trigger. The DROP of
the insert trigger, for example, drops both parts of
they are there."
==========

Now, follow the examples below to help you understand
the syntax as well as the entire process of TRIGGERS
and AFTER TRIGGERS in R:BASE 6.5++ and 7.0!

Example 01: (Multi-Table Scenario)

-- TrigTst2.DEF
-- Author: A. Razzak Memon
-- Example taken from: Running R:BASE Your Way!
-- Section: Enhanced Commands
*( Assuming BI.PRC,AI.PRC,BU.PRC,AU.PRC,BD.PRC and
   AD.PRC are created accordingly.)
-- R:BASE 6.5++ (Build:1.852xRT03, R:BASE 7.0 & higher

SET ERROR MESSAGE 2988 OFF
SET PROCEDURE BI LOCK ON
SET PROCEDURE AI LOCK ON
SET PROCEDURE BU LOCK ON
SET PROCEDURE AU LOCK ON
SET PROCEDURE BD LOCK ON
SET PROCEDURE AD LOCK ON

PUT BI.PRC AS BI
PUT AI.PRC AS AI
PUT BU.PRC AS BU
PUT AU.PRC AS AU
PUT BD.PRC AS BD
PUT AD.PRC AS AD

CREATE TABLE `TRMain` +
(`Account` INTEGER NOT NULL, +
 `Balance` CURRENCY )
ALTER TABLE `TRMain` ADD PRIMARY KEY +
(`Account`) +
('Values for rows in TRMain must be unique. (2738)', +
 'Cannot delete - values exist in another table. (2509)', +
 'Cannot update - values exist in another table. (2717)')

CREATE TABLE `TRDetail`  +
(`Account` INTEGER NOT NULL, +
 `Action` TEXT (12), +
 `Amount` CURRENCY)
ALTER TABLE `TRDetail` ADD FOREIGN KEY +
 ( `Account`)+
 REFERENCES `TRMain` +
('Cannot insert - value does not exist in TRMain. (2510)', +
 'Cannot update - value does not exist in TRMain. (2718)')

ALTER TABLE TRMain ADD TRIGGER +
INSERT BI INSERT AFTER AI
ALTER TABLE TRDetail ADD TRIGGER +
INSERT BD INSERT AFTER AD UPDATE BU UPDATE AFTER AU

SET PROCEDURE BI LOCK OFF
SET PROCEDURE AI LOCK OFF
SET PROCEDURE BU LOCK OFF
SET PROCEDURE AU LOCK OFF
SET PROCEDURE BD LOCK OFF
SET PROCEDURE AD LOCK OFF

SET ERROR MESSAGE 2988 OFF
RETURN

Example 02: (Single Table Scenario)

-- TrigTst1.DEF
-- Author: A. Razzak Memon
-- Example taken from: Running R:BASE Your Way!
-- Section: Enhanced Commands
*( Assuming TrigBI.PRC,TrigAI.PRC,TrigBU.PRC,
   TrigAU.TrigPRC,TrigBD.PRC and TrigAD.PRC are
   created accordingly.)
-- R:BASE 6.5++ (Build:1.852xRT03, R:BASE 7.0 & higher

SET ERROR MESSAGE 2038 OFF
SET ERROR MESSAGE 2988 OFF

SET PROCEDURE TrigBI LOCK ON
SET PROCEDURE TrigAI LOCK ON
SET PROCEDURE TrigBU LOCK ON
SET PROCEDURE TrigAU LOCK ON
SET PROCEDURE TrigBD LOCK ON
SET PROCEDURE TrigAD LOCK ON

PUT TrigBI.PRC AS TrigBI
PUT TrigAI.PRC AS TrigAI
PUT TrigBU.PRC AS TrigBU
PUT TrigAU.PRC AS TrigAU
PUT TrigBD.PRC AS TrigBD
PUT TrigAD.PRC AS TrigAD

DROP TABLE TrigTest
CREATE TABLE `TrigTest` +
(`ID` INTEGER NOT NULL, +
`TValue` TEXT 8)
ALTER TABLE `TrigTest` ADD PRIMARY KEY +
(`ID`) +
('Values for rows in TrigTest must be unique. (2738)', +
 'Cannot delete - values exist in another table. (2509)', +
 'Cannot update - values exist in another table. (2717)')

ALTER TABLE TrigTest ADD TRIGGER +
INSERT TrigBI +
INSERT AFTER TrigAI +
UPDATE TrigBU +
UPDATE AFTER TrigAU +
DELETE TrigBD +
DELETE AFTER TrigAD

SET PROCEDURE TrigBI LOCK OFF
SET PROCEDURE TrigAI LOCK OFF
SET PROCEDURE TrigBU LOCK OFF
SET PROCEDURE TrigAU LOCK OFF
SET PROCEDURE TrigBD LOCK OFF
SET PROCEDURE TrigAD LOCK OFF

SET ERROR MESSAGE 2988 ON
SET ERROR MESSAGE 2038 ON
RETURN

Hope that helps!

Enjoy the exclusive Features and POWER of R:BASE and
make sure to have fun!

If you need more examples, feel free to ask.

Very Best R:egards,

Razzak.


At 08:18 PM 6/27/2003 -0700, you wrote:


Razzak,

RBDOS 1.866xRT03

Dennis

--- "A. Razzak Memon" <[EMAIL PROTECTED]> wrote:
>
> Dennis,
>
> What Version and Build of R:BASE are you using?
>
> Very Best R:egards,
>
> Razzak.



Reply via email to