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.

