У меня есть две таблицы, таблица A и таблица B. Я хочу установить триггер. Как только вставка происходит в таблице A, она может вызвать некоторые события в таблице B.
Ниже приведены две таблицы, например,
- Таблица A столбцы: (идентификатор продукта, имя продукта, производство)
- столбцы таблицы B: (покупатель, product_id)
Что я хочу сделать: после вставки новой строки в таблицу A, если ее product_name имеет значение null, то инициировать обновления для tableB. Обновите tableB 'product_id на этот новый вставленный product_id, если строки в tableB имеют то же производство, что и новое вставленное производство.
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
)