我有两个表,tableA 和 tableB。我想设置触发器。一旦在 tableA 中发生插入,它可能会触发 tableB 中的一些事件。
两张表如下,例如,
- tableA 列:(product_id,product_name,manufacturer)
- tableB 列:(买家,product_id)
我想要做的是:在表A中插入一个新行后,如果它的product_name为空,则在表B上触发更新。如果 tableB 中的行与新插入的制造商具有相同的制造商,则将 tableB'product_id 更新为此新插入的 product_id。
CREATE TRIGGER t1
AFTER INSERT ON tableA
FOR EACH ROW WHEN (NEW.product_name is NULL)
BEGIN
UPDATE tableB
SET tableB.product_id = :NEW.product_id
WHERE tableB.product_id IN (SELECT tableA.product_id
FROM tableA
WHERE tableA.manufacture = :NEW.manufacture);
END;
它总是在 SQL 开发人员中抱怨几个错误:
Error(2,2): PL/SQL: SQL Statement ignored
Error(2,120): PL/SQL: ORA-00933: SQL command not properly ended
Error(2,36): PL/SQL: ORA-00904: "NEW"."product_id": invalid identifier
Error: PLS-00801: internal error [ph2csql_strdef_to_diana:bind]
更新:
CREATE TABLE "tableA"
(
"PRODUCT_ID" NUMBER PRIMARY KEY,
"PRODUCT_NAME" VARCHAR2(50 BYTE) DEFAULT NULL,
"MANUFACTURE" VARCHAR2(50 BYTE) DEFAULT NULL
)
CREATE TABLE "tableB"
(
"BUYER_ID" NUMBER PRIMARY KEY,
"PRODUCT_ID" NUMBER DEFAULT NULL
)