Предположим, что в базе данных поддерживаются две - Ответ на вопрос по информатике №1163887
Новинка
-37%
Вопрос
Предположим, что в базе данных поддерживаются две специальные “аудиторские” таблицы AUDIT1 и AUDIT2 следующей структуры:AUDIT1EMP_NOEVENT_TSOLD_SALOLD_BONUSNEW_SALNEW_BONUSAUDIT2DEPT_NOEVENT_TSAVG_DEPT_SALAVG_DEPT_BONUSВ таблице AUDIT1 фиксируются все события, соответствующие изменению зарплаты служащих. В столбце EVENT_TS сохраняется временная метка соответствующего события. В таблице AUDIT2 регистрируются события, связанные с такими обновлениями данных о сотрудниках, при которых среднее значение зарплаты или премиальных некоторого отдела становится меньше среднего значения зарплаты или премиальных служащих, участвующих в некотором проекте, в котором принимает участие и хотя бы один сотрудник данного отдела. В столбце EVENT_TS таблицы AUDIT2 сохраняется временная метка соответствующего события, а в столбцах AVG_DEPT_SAL и AVG_DEPT_BONUS – соответствующие “критические” средние значения. Какие из приводимых ниже определений триггеров обеспечат требуемую функциональность?- CREATE TRIGGER EMP_INSERT AFTER INSERT ON EMP REFERENCING NEW ROW AS NEW_EMP FOR EACH ROW INSERT INTO AUDIT1 ROW (NEW_EMP.EMP_NO, CURRENT_TIMESTAMP, 0, 0, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS);CREATE TRIGGER EMP_UPDATE AFTER UPDATE OF EMP_SAL, EMP_BONUS ON EMP REFERENCING OLD ROW AS OLD_EMP NEW ROW AS NEW_EMP FOR EACH ROW INSERT INTO AUDIT1 ROW (NEW_EMP.EMP_NO, CURRENT_TIMESTAMP, OLD_EMP.EMP_SAL, OLD_EMP.EMP_BONUS, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS);CREATE TRIGGER EMP_DELETE AFTER DELETE ON EMP REFERENCING OLD ROW AS OLD_EMP FOR EACH ROW INSERT INTO AUDIT1 ROW (OLD_EMP.EMP_NO, CURRENT_TIMESTAMP, OLD_EMP.EMP_SAL, OLD_EMP.EMP_BONUS, 0, 0);CREATE TRIGGER EMP_INSERT1 AFTER INSERT ON EMP INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO));CREATE TRIGGER EMP_UPDATE1 AFTER UPDATE OF EMP_SAL, EMP_BONUS ON EMP INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM NEW_EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM NEW_EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO));CREATE TRIGGER EMP_DELETE1 AFTER DELETE ON EMP INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM NEW_EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM NEW_EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO));
- CREATE TRIGGER EMP_INSERT AFTER INSERT ON EMP REFERENCING NEW ROW AS NEW_EMP FOR EACH ROW BEGIN ATOMIC INSERT INTO AUDIT1 ROW (NEW_EMP.EMP_NO, CURRENT_TIMESTAMP, 0, 0, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO)); END;CREATE TRIGGER EMP_UPDATE AFTER UPDATE OF EMP_SAL, EMP_BONUS ON EMP REFERENCING OLD ROW AS OLD_EMP NEW ROW AS NEW_EMP FOR EACH ROW BEGIN ATOMIC INSERT INTO AUDIT1 ROW (NEW_EMP.EMP_NO, CURRENT_TIMESTAMP, OLD_EMP.EMP_SAL, OLD_EMP.EMP_BONUS, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO)); END;CREATE TRIGGER EMP_DELETE AFTER DELETE ON EMP REFERENCING OLD ROW AS OLD_EMP FOR EACH ROW BEGIN ATOMIC BEGIN ATOMIC INSERT INTO AUDIT1 ROW (OLD_EMP.EMP_NO, CURRENT_TIMESTAMP, OLD_EMP.EMP_SAL, OLD_EMP.EMP_BONUS, 0, 0); INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO)); END;
- CREATE TRIGGER EMP_UPDATE AFTER ON EMP REFERENCING OLD ROW AS OLD_EMP NEW ROW AS NEW_EMP FOR EACH ROW BEGIN ATOMIC INSERT INTO AUDIT1 ROW (NEW_EMP.EMP_NO, CURRENT_TIMESTAMP, OLD_EMP.EMP_SAL, OLD_EMP.EMP_BONUS, NEW_EMP.EMP_SAL, NEW_EMP.EMP_BONUS); INSERT INTO AUDIT2 (SELECT DISTINCT NE.DEPT_NO, CURRENT_TIMESTAMP, AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) FROM EMP NE WHERE NE.DEPT_NO = NEW_EMP.DEPT_NO GROUP BY NE.DEPT_NO HAVING AVG (NE.EMP_SAL), AVG (NE.EMP_BONUS) < (SELECT AVG (NE1.EMP_SAL), AVG (NE1.EMP_BONUS) FROM EMP NE1 WHERE NE.PRO_NO = NE1.PRO_NO)); END;
Ответ
Этот вопрос в коллекциях

Гарантия сдачи без лишних хлопот! ✅🎓 Ответы на тесты по любым дисциплинам, базы вопросов, работы и услуги для Синергии, МЭИ и других вузов – всё уже готово! 🚀 🎯📚 Гарантия качества – или возврат денег! 💰✅











