表格:
员工可以接受0或更多客户的订单,客户可以下1个或多个订单。从这个意义上讲,Orders是Employee和Customer之间的桥梁,包含Employee_no和Customer_no作为FK。
我想创建一个触发器,在将新客户记录添加到Customer表后,按以下方式更新Orders表:
......等到最后一个Employee_no(例如10)
然后再将另外五个客户分配给Employee_no 1。
因此,它是循环的,员工轮流处理客户。
答案 0 :(得分:1)
听起来你想在Order表上触发一个触发器,而不是Customer表。也许这样的事情会起作用吗?
编写一个查询,以获取员工在订单表中拥有的5个订单的完整倍数。
使用此查询编写一个函数,返回员工的员工ID,然后依次为该员工分配订单。测试功能以确保它看起来像你想要的那样。
使用在Orders表中设置employee_id的函数在insert上写一个触发器。
答案 1 :(得分:1)
我在订单表上使用触发器来确定客户最少的员工。这可以防止您不得不重新评估所有现有订单。
create or replace trigger trigger_orders
before insert on orders
for each row
begin
if :new.employee_no is null
then
... determine employee with least orders and assign this no to :new.employee_no ...
end if;
end;