我正在尝试创建一个触发器,但我了解到我无法像第一次尝试那样设计它,如下所示。由于在修改表时从表中进行选择,这将导致“变异表”错误。一次只插入一条记录时,实际上并没有导致此错误,但是当我一次插入多条记录时,它确实会导致此错误。
触发器的目的是统计客户等于即将插入的客户的表中的记录数,并将新的order_num值设置为count+1。我还有一个由从序列中提取的触发器设置的公钥值。一旦我删除了触发器的 order_num 部分和相关的 SELECT,这部分就可以正常工作了。我怎样才能在这里实现我想要做的事情?提前致谢。
CREATE OR REPLACE TRIGGER t_trg
BEFORE INSERT ON t
FOR EACH ROW
DECLARE
rec_count NUMBER(2,0);
BEGIN
SELECT COUNT(*) INTO rec_count
FROM t
WHERE customer_id = :NEW.customer_id;
:NEW.order_num:= rec_count+1;
:NEW.order_pk_id:= table_seq.NEXTVAL;
END;