Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

/--MySql --PostSQL Using the tables created by the attached SQL code, we will create two triggers on the TABLE tblBranchTransactions: The first trigger executes BEFORE

/--MySql --PostSQL Using the tables created by the attached SQL code, we will create two triggers on the TABLE tblBranchTransactions: The first trigger executes BEFORE INSERT and checks that the accntBalance in tblAccntMaster + inserted transaction amount (transAmt) will be >= 0. Hint: Since accntBalance and transAmt are MONEY, you will have to CAST the integer zero to MONEY! IF accntBalance+transAmt < CAST(0 TO MONEY) That works, but it's tedious. PostgreSQL gives us a shortcut version of the cast: IF accntBalance+transAmt < 0::MONEY Same thing, only less typing. If the result will be less than zero, RETURN NULL (abort). -- -------------------------- The second trigger will execute AFTER INSERT ON tblBranchTransactions and will update the balance in tblAccntMaster to reflect the current balance. I.e.: It will execute an UPDATE tblAccntMaster such that accntBalance = accntBalance+transAmt... where transAmt may be negative. (This is OK, so long as accntBalance isn't negative.) Note, these are both simple triggers. You will not use dblink or any two-step processing such as we did in the logging examples. Each part consists of a trigger coupled with a trigger function. Two parts means two of each. Both run as SECURITY INVOKER, which is the default. assignment using one file. One little caveat for PostgreSQL triggers: if you alter the underlying tables (i.e. add a constraint or modify a field), the triggers and their associated functions must be recompiled, otherwise, they just stop working! */ -- database: "accnts" DROP TABLE IF EXISTS tblBranchTransactions; DROP TABLE IF EXISTS tblAccntMaster; CREATE TABLE tblAccntMaster ( accntID CHAR(16), accntBalance MONEY DEFAULT 0, CONSTRAINT accntPK PRIMARY KEY(accntID) ); CREATE TABLE tblBranchTransactions ( transID INTEGER, accntID CHAR(16), transDate DATE, transAmt MONEY, CONSTRAINT transPK PRIMARY KEY(transID), CONSTRAINT masterFK FOREIGN KEY(accntID) REFERENCES tblAccntMaster(accntID) ); -- ---------------------------------------- DROP SEQUENCE IF EXISTS seqTransID; CREATE SEQUENCE seqTransID; -- Gives an easy way to assign the transID if you want it. -------------------------------------------

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image_2

Step: 3

blur-text-image_3

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Artificial Intelligence A Modern Approach

Authors: Stuart Russell, Peter Norvig

4th Edition

0134610997, 978-0134610993

More Books

Students also viewed these Databases questions