我有三个表CUSTOMER
,PARAM_MASTER
和CUSTOMER_PARAM
。我在插入表CUSTOMER
时编写了一个触发器来从表PARAMS_MASTER
获取数据并获取新的CUSTOMER_ID
,我想将其插入到表CUSTOMER_PARAM
中。
create or replace TRIGGER "CUSTOMER_PARAM_INS_TRIG"
BEFORE INSERT ON CUSTOMER
for each row
BEGIN
INSERT INTO CUSTOMER_PARAMS (PARAM_ID,PARAM_VALUE_EN,PARAM_VALUE_VI,CUSTOMER_ID)
SELECT PARAM_ID,DEFAULT_VALUE_EN,DEFAULT_VALUE_VI,NEW:CUSTOMER_ID
FROM PARAMS_MASTER,CUSTOMER
WHERE PARAM_GROUP='CUS';
END;
答案 0 :(得分:2)
您的触发器看起来会抛出变异表错误。这是因为您的触发器代码包括CUSTOMER上的选择,即您要插入的表。
碰巧这种选择是不必要的,因为你只需要新的CUSTOMER_id。所以这应该有效:
create or replace TRIGGER "CUSTOMER_PARAM_INS_TRIG"
BEFORE INSERT ON CUSTOMER
for each row
BEGIN
INSERT INTO CUSTOMER_PARAMS
(PARAM_ID,PARAM_VALUE_EN,PARAM_VALUE_VI,CUSTOMER_ID)
SELECT PARAM_ID,DEFAULT_VALUE_EN,DEFAULT_VALUE_VI, :NEW.CUSTOMER_ID
FROM PARAMS_MASTER
WHERE PARAM_GROUP='CUS';
END;