【发布时间】:2019-05-13 01:43:57
【问题描述】:
我需要在我的 SQL 代码中编写一个触发器,以更改表 A(Asortyment) 中的值,该表 A(Asortyment) 与表 B(Historia_Zamowien) 具有多对多关系。要连接 A 和 B,我使用表 C(Zamowienia_Asortyment)。
How it looks like in relational model
我需要在INSERT ON Historia_Zamowien 之后通过Zamowienia_Asortyment 到达Asortyment.Dostepnosc,并将值更改为0。我写了一些不起作用的代码,我不知道出了什么问题。你会帮忙吗?
CREATE TRIGGER "Zmiana_Dostepnosci_Po_Zamowieniu"
AFTER INSERT ON "Historia_Zamowien"
FOR EACH ROW
BEGIN
UPDATE "Asortyment"
SET tab1."Dostepnosc" = 0
FROM "Asortyment" tab1 JOIN "Zamowienia_Asortyment" tab2 ON tab1."ID_sprzetu" = tab2."ID_sprzetu"
JOIN inserted tab3 ON tab2."Numer_zamowienia" = tab3."Numer_zamowienia"
WHERE tab1."ID_sprzetu" = tab2."ID_sprzetu" AND tab2."Numer_zamowienia" = inserted."Numer_Zamowienia"
END;
/
运行代码后我得到:
Error(1,5): PL/SQL: SQL Statement ignored
Error(3,5): PL/SQL: ORA-00933: SQL command not properly ended
Error(7): PLS-00103: Endountered symbol "end-of-file" when expecting one of the following: ( begin case declare end exception exit for goto if loop mod null pragma raise return select update while with <an identifier> <a double-quoted delimited-identifier> <a bind variable> << continue close current delete fetch lock insert open rollback savepoint set sql execute commit forall merge pipe purge json_exists json_value json_query json_object json_array
【问题讨论】:
-
des
inserted在您的查询中是什么意思?它与Historia_Zamowien中新创建的行有关? -
我不是 100% 确定,但我希望它像你说的那样有效,因为我尝试了很多很多选项来使它有效,但没有一个有效,在这个之后我放弃了。跨度>
标签: sql oracle sql-insert database-trigger