Архив / Хранимые процедуры
.pdftblEmployee
intEmpId |
txtEmpName |
fltSalary |
… |
|
|
|
|
1023 |
Бобров А.А. |
10500 |
… |
|
|
|
|
1025 |
Мухина В.Н. |
12000 |
… |
|
|
|
|
1026 |
Лобов А.Г. |
14000 |
… |
|
|
|
|
Update tblEmployee Set fltSalary=12500
Emp_Update
old |
1025 |
Мухина В.Н. |
12000 |
… |
|
|
|
|
|
|
|
|
|
|
new |
1025 |
Мухина В.Н. |
12500 |
… |
tblEmployee
intEmpId |
txtEmpName |
fltSalary |
… |
|
|
|
|
1023 |
Бобров А.А. |
10500 |
… |
|
|
|
|
1025 |
Мухина В.Н. |
12500 |
… |
|
|
|
|
1026 |
Лобов А.Г. |
14000 |
… |
|
|
|
|
Update tblEmployee Set fltSalary=12500
Emp_Update
old |
1025 |
Мухина В.Н. |
12000 |
… |
|
|
|
|
|
|
|
|
|
|
new |
1025 |
Мухина В.Н. |
12500 |
… |
tblEmployee
intEmpId |
txtEmpName |
fltSalary |
… |
|
|
|
|
1023 |
Бобров А.А. |
10500 |
… |
|
|
|
|
1025 |
Мухина В.Н. |
12500 |
… |
|
|
|
|
1026 |
Лобов А.Г. |
14000 |
… |
|
|
|
|
Update tblEmployee Set fltSalary=12500
Emp_Update
old |
1025 |
Лобов А.Г. |
14000 |
… |
|
|
|
|
|
|
|
|
|
|
new |
1025 |
Лобов А.Г. |
12500 |
… |
tblEmployee
intEmpId |
txtEmpName |
fltSalary |
… |
|
|
|
|
1023 |
Бобров А.А. |
10500 |
… |
|
|
|
|
1025 |
Мухина В.Н. |
12500 |
… |
|
|
|
|
1026 |
Лобов А.Г. |
12500 |
… |
|
|
|
|
Update tblEmployee Set fltSalary=12500
Emp_Update
old |
1025 |
Лобов А.Г. |
14000 |
… |
|
|
|
|
|
|
|
|
|
|
new |
1025 |
Лобов А.Г. |
12500 |
… |
tblEmployee
intEmpId |
txtEmpName |
fltSalary |
… |
|
|
|
|
1023 |
Бобров А.А. |
10500 |
… |
|
|
|
|
1025 |
Мухина В.Н. |
12500 |
… |
|
|
|
|
1026 |
Лобов А.Г. |
12500 |
… |
|
|
|
|
Update tblEmployee Set fltSalary=12500
если зарплата оказалась увеличенной более чем на 5%, то это исправляется, и зарплата увеличивается ровно на 5% от предыдущей зарплаты
create trigger emp_update after update on tblemployee for each row
begin
if (new.fltSalary-old.fltSalary) > (0.05 * old.fltSalary) then Update tblemployee set fltSalary = 1.05 * old.fltSalary Where intEmpId=old. intEmpId;
end if; end;
tblEmployee
intEmpId |
txtEmpName |
fltSalary |
… |
|
|
|
|
1023 |
Бобров А.А. |
10000 |
… |
|
|
|
|
1025 |
Мухина В.Н. |
12000 |
… |
|
|
|
|
1026 |
Лобов А.Г. |
14000 |
… |
|
|
|
|
Update tblEmployee Set fltSalary=12000 Where intEmpId=1023
Emp_Update
old |
1023 |
Бобров А.А. |
10000 |
… |
new |
|
|
|
|
1023 |
Бобров А.А. |
12000 |
… |
UPDATE tblEmployee SET fltSalary = 1.05 * O.fltSalary
WHERE intEmpId = O.intEmpId
tblEmployee
intEmpId |
txtEmpName |
fltSalary |
… |
|
|
|
|
1023 |
Бобров А.А. |
10000 |
… |
|
|
|
|
1025 |
Мухина В.Н. |
12000 |
… |
|
|
|
|
1026 |
Лобов А.Г. |
14000 |
… |
|
|
|
|
Update tblEmployee Set fltSalary=12000 Where intEmpId=1023
Emp_Update
old |
1023 |
Бобров А.А. |
10000 |
… |
new |
|
|
|
|
1023 |
Бобров А.А. |
12000 |
… |
UPDATE tblEmployee SET fltSalary = 1.05 * old.fltSalary
WHERE intEmpId = old.intEmpId
Emp_Update
old |
1023 |
Бобров А.А. |
12000 |
… |
|
|
|
|
|
new |
1023 |
Бобров А.А. |
10500 |
… |
tblEmployee
intEmpId |
|
txtEmpName |
|
fltSalary |
… |
|
|
|
|
|
|
1023 |
|
Бобров А.А. |
|
10000 |
… |
|
|
|
|
|
|
1025 |
|
Мухина В.Н. |
|
12000 |
… |
|
|
|
|
|
|
1026 |
|
Лобов А.Г. |
|
14000 |
… |
|
|
|
|
|
|
tblLog |
|
|
|
|
|
|
|
|
|
|
|
datDateLog |
fltAvgSalary |
|
|
||
|
|
|
|
|
|
10.09.2011 |
|
12000.00 |
|
|
|
|
|
|
|
|
|
Триггер записывает в другую таблицу текущую дату и текущую среднюю зарплату, которая рассчитывается по данным из измененной таблицы.
Триггер вызывается после выполнения операции изменения для всей таблицы в целом.
CREATE TRIGGER tgrEmployeeNewAverage AFTER UPDATE ON tblEmployee FOR EACH ROW
Begin
INSERT INTO tblLog (datDateLog, fltAvgSalary) VALUES (CURDATE(),
(SELECT Avg(fltSalary) FROM tblEmployee))
End