Gaz,
Within any PL/SQL block (trigger or not), you may say:
SELECT COUNT(*) into <variable> FROM <table_name>
WHERE <some_condition>;
Your CLASS_REGISTRATION table could have a "STATUS" column with status codes that represent statuses that include:
"Confirmed"
"Wait List"
"No Hope"
et cetera
Additionally, your parent table, something like "CLASS_SESSION_INFO" should have columns "CAP" and "MAX_WAIT_LIST", which you will want to "SELECT...INTO" PL/SQL variables, as well.
Your SELECT statement might look something like:
SELECT COUNT(*) INTO CONFIRMED_HOLD
FROM CLASS_REGISTRATION
WHERE CLASS_REGISTRATION.STATUS = 'Wait List'
AND CLASS_REGISTRATION.SESSION_ID = CLASS_SESSION_INFO.ID;
If the COUNT is less than CLASS_SESSION_INFO.CAP, then set CLASS_REGISTRATION.STATUS = 'Confirmed'; if COUNT is greater than CLASS_SESSION_INFO.CAP, then
SELECT COUNT(*) INTO WAIT_LIST_HOLD
FROM CLASS_REGISTRATION
WHERE CLASS_REGISTRATION.STATUS = 'Wait List'
AND CLASS_REGISTRATION.SESSION_ID = CLASS_SESSION_INFO.ID;
If WAIT_LIST_HOLD < MAX_WAIT_LIST_HOLD, then set their CLASS_REGISTRATION.STATUS = 'Wait List', otherwise set their CLASS_REGISTRATION.STATUS = 'No Hope';
Obviously, some of the above code is pseudo-code; the SELECT statements are syntactically correct given matching table and PL/SQL variable definitions.
Let us know if this gives you a vision of how to build your trigger.
![[santa] [santa] [santa]](/data/assets/smilies/santa.gif)
Mufasa
(aka Dave of Sandy, Utah, USA @ 11:40 (03Dec03) GMT, 04:40 (03Dec03) Mountain Time)