Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PostgreSQL触发器用于计算工资_Postgresql_Triggers - Fatal编程技术网

PostgreSQL触发器用于计算工资

PostgreSQL触发器用于计算工资,postgresql,triggers,Postgresql,Triggers,我对PostgreSQL和MySQL下的以下触发器都有问题。第3行中有bug,等等。应该创建一个触发器,根据授课时间增加教授的工资 create create trigger viellehre after insert on Vorlesungen referencing new as vo_neu foreach row when group by vo_neu.gelesenvon having sum(Vorlesungen.SWS) > 5 and sum(Vorlesung

我对PostgreSQL和MySQL下的以下触发器都有问题。第3行中有bug,等等。应该创建一个触发器,根据授课时间增加教授的工资

create create trigger viellehre after insert on Vorlesungen referencing new as vo_neu foreach row when group by vo_neu.gelesenvon 
having sum(Vorlesungen.SWS) > 5 and 
sum(Vorlesungen.SWS) - vo_neu.SWS <= 5 
update Professoren 
set Professoren.gehalt = Professoren.gehalt * 1.05 
where Professoren.PersNr = vo_neu.gelesenvon;
按vo_neu.gelesenvon分组时,在Vorlesungen上插入后创建触发器viellehre,引用每行新的vou_neu
总和(Vorlesungen.SWS)>5,且

sum(Vorlesungen.SWS)-vo_neu.SWS您不能有这样的触发器定义:

此外,触发器定义可以指定一个布尔WHEN条件,该条件将被测试以查看是否应该触发触发器。行内级别触发条件何时可以检查行中列的旧值和/或新值。语句级触发器也可以具有WHEN条件,尽管该功能对它们不是很有用,因为该条件不能引用表中的任何值


这不是PostgreSQL语法,请检查手册并创建一个触发器函数来执行此操作。在Vorlesungen上插入后创建触发器加值…引用在postgre上不起作用?对于每行when group by vou neu.gelesenvon具有sum(Vorlesungen.SWS)>5和sum(Vorlesungen.SWS)-vou neu.SWS,我从未见过when子句中使用group by/having定义的触发器。这在甲骨文是不合法的,我怀疑它在博士后是合法的。您试图实现的逻辑看起来不适合使用触发器进行处理,这在任何情况下都会使系统难以调试。看起来这应该包含在应用程序代码中。