创建计算每个新插入员工的总工资的行级触发器

     2023-05-09     93

关键词:

【中文标题】创建计算每个新插入员工的总工资的行级触发器【英文标题】:Create row level trigger that computes the total salary for each newly inserted employee 【发布时间】:2015-12-03 19:45:54 【问题描述】:

我需要创建一个行级触发器来计算每个新插入的员工的总薪水 - 在插入之前和更新薪水或奖金字段之前触发。我还需要使用 :NEW 字段来存储数据。

到目前为止我有:我真的不知道如何显示总工资,我相信我设置了正确的开始,只是不确定 FOR EACH ROW WHEN 之后的其余部分

CREATE OR REPLACE TRIGGER 
TRG_Step3_TotSalary
BEFORE UPDATE OF salary, bonus ON Lab12_Employees
FOR EACH ROW WHEN (Salary + Bonus = :NEW.TotalSalary);
BEGIN 
INSERT :NEW.Salary + bonus
DBMS_OUTPUT.PUT_LINE('New Salary =' || (:NEW.TotalSalary);

【问题讨论】:

为什么你需要WHEN 你不需要更新任何薪水或奖金的变化吗?所以只需FOR EACH ROW 嗯,是的,我可以进行更新我只是担心更新更新 - 并获得递归触发器 【参考方案1】:

未经测试,但我相信以下应该可以工作

CREATE OR REPLACE TRIGGER 
TRG_Step3_TotSalary
BEFORE UPDATE OF salary, bonus ON Lab12_Employees
FOR EACH ROW 
BEGIN 
  :NEW.TotalSalary := :NEW.Salary + bonus
  DBMS_OUTPUT.PUT_LINE('New Salary =' || (:NEW.TotalSalary);
END

【讨论】:

是的,这不起作用:/开始语句中的语法错误呃 错误是什么?我认为我们将需要 :NEW.bonus 而不仅仅是在开始后的第一行中添加奖金,但错误消息将有助于澄清 缺少半冒号 :NEW.TotalSalary := :NEW.Salary + bonus 应该是 :NEW.TotalSalary := :NEW.Salary + bonus;

T-SQL:计算员工的总工资

】T-SQL:计算员工的总工资【英文标题】:T-SQL:calculatetotalsalaryofemployees【发布时间】:2021-06-1705:53:12【问题描述】:我想计算每个员工在一段时间内的工资,例如从01-01-2021到05/31/2021。我有这3张桌子:老师IdDateOfBirthEmailPhoneNumber1... 查看详情

如何使用laravel 5中的员工数据计算员工的总工资?

】如何使用laravel5中的员工数据计算员工的总工资?【英文标题】:howtocalculatetotalsalaryofanemployeewithemployeedatainlaravel5?【发布时间】:2016-08-0116:28:59【问题描述】:我正在使用laravel5.1并且有两个表。员工工资结构:雇员id|名称|城... 查看详情

行级触发器和语句级触发器

1、   行级触发器对DML语句影响的每个行执行一次。(:NEW和:OLD使用方法和意义,new只出现在insert和update时,old只出现在update和delete时。在insert时new表示新插入的行数据,update时new表示要替换的新数据、old表示要... 查看详情

范围触发器 - 员工工资

】范围触发器-员工工资【英文标题】:RangeTriggers-SalaryofEmployess【发布时间】:2020-06-0321:12:21【问题描述】:我有一张我称为FUNC的表,我的所有员工都在其中,我还有另一个表可以注册不同的工作角色...每个员工都必须有一个工... 查看详情

在插入表之前创建触发器

】在插入表之前创建触发器【英文标题】:Createtriggerbeforeinsertintable【发布时间】:2021-09-2923:02:44【问题描述】:我在插入员工表之前创建了一个触发器以计算其年龄,但尝试插入员工表会返回以下错误错误代码:1442。无法在存... 查看详情

oracle创建触发器

创建触发器:createtablestd(deptnonumber(2),salnumber(5));insertintostdvalues(20,2000);假设std表中的信息,是部门号与该部门的平均工资。现在要创建触发器,当在emp插入信息时,把工资低于所属部门的平均工资的职员信息插入到emp1表中emp1表... 查看详情

oracle如何创建行级触发器?

】oracle如何创建行级触发器?【英文标题】:howtocreaterowleveltriggerinoracle?【发布时间】:2013-02-0606:42:05【问题描述】:我在hr架构中有一个名为employee的表,我需要在此表上创建行级触发器,以便每当我尝试更新员工表上的薪水时... 查看详情

创建一个存储过程,接受并计算该部门的总工资并显示部门编号和总工资

】创建一个存储过程,接受并计算该部门的总工资并显示部门编号和总工资【英文标题】:Creatingastoredprocedurethatacceptsandcomputesthetotalsalariesforthatdepartmentanddisplaysboththedepartment#&thetotalsalaries【发布时间】:2015-07-0405:21:18【问题描... 查看详情

使用 SqlBulkCopy 为每个插入的行触发触发器

】使用SqlBulkCopy为每个插入的行触发触发器【英文标题】:FiretriggerforeveryinsertedrowusingSqlBulkCopy【发布时间】:2013-09-3022:17:18【问题描述】:我正在使用SqlBulkCopy类在表tbl_records中一次插入50k行我在这张桌子上设置了一个AfterInsert触... 查看详情

练习题(困难)salaryraise

...资,工资范围10^9,所有员工的工资必须满足如下约束:每个员工的工资不能高于其上司的工资,否则就要给其上司涨工资,使上司的工资和下属相同。先一次给出每个员工的上司信息和工资,求涨工资的总次数。详细描述如下... 查看详情

Mysql - 创建触发器以根据插入另一个表中的行插入新行

】Mysql-创建触发器以根据插入另一个表中的行插入新行【英文标题】:Mysql-Createtriggertoinsertanewrowbasedonarowinsertedinanothertable【发布时间】:2017-09-1116:20:24【问题描述】:您好,我有两个表,分别名为users和userrewards。当新行插入到u... 查看详情

在插入新记录之前触发检查部门的平均工资

】在插入新记录之前触发检查部门的平均工资【英文标题】:triggertocheckavgsalaryofthedepartmentbeforeinsertingnewrecord【发布时间】:2017-10-0602:13:09【问题描述】:假设员工表如下EIDENAMEDEPTNOSALARY1john101002jau103003cau102004cha202005cwea205006dan20200... 查看详情

计算月份之间的总差

...个月添加一行新代码。除此之外,它还会为每个总计变体创建一个新列。opps_id_c:指机会表中的opps_id 查看详情

leetcode:database102.计算税后工资(代码片段)

...一条查询SQL来查找每个员工的税后工资。每个公司的税率计算依照以下规则:如果这个公司员工最高工资不到1000,税率为0%如果这个公司员工最高工资在1000到10000之间,税率为24%如果这个公司员工最高工资大于10000... 查看详情

替代行级触发器?

】替代行级触发器?【英文标题】:Alternativetorowleveltriggers?【发布时间】:2009-02-0218:07:45【问题描述】:MSSQLServer没有行级触发器,对吗?如果我需要从触发器中插入一行,然后根据第一次插入的结果插入另一行,游标会是最佳... 查看详情

pat-计算工资

某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年的员工为老职工,5... 查看详情

[pta]7-10计算工资(代码片段)

某公司员工的工资计算方法如下:一周内工作时间不超过40小时,按正常工作时间计酬;超出40小时的工作时间部分,按正常工作时间报酬的1.5倍计酬。员工按进公司时间分为新职工和老职工,进公司不少于5年... 查看详情

Mysql:我想创建一个触发器,它将基于员工表和类别表将数据插入用户访问权限表

】Mysql:我想创建一个触发器,它将基于员工表和类别表将数据插入用户访问权限表【英文标题】:Mysql:Iwanttocreateatriggerwhichwillinsertdataintouseraccesspermissiontablebasedonemployeetableandcategoriestable【发布时间】:2015-12-1800:24:29【问题描述... 查看详情