Я немного новичок в SQL, поэтому, пожалуйста, несите меня. Я пытаюсь создать триггер, который будет обновлять цену в моей корзине (COMANDA), всякий раз, когда я включаю в нее новый продукт (PRODUS). Я искал, как я могу это сделать, но все, что я пробовал, не удалось. Любая помощь и советы могут быть разными. Вот мои таблицы, отношения и моя последняя попытка создания триггера.Создайте триггер для обновления столбца таблицы при вставке или обновлении в другой таблице (Oracle SQL)
DROP TABLE CLIENT;
DROP TABLE COMANDA;
DROP TABLE ITEMCOMANDA;
DROP TABLE PRODUS;
CREATE TABLE CLIENT
(
STRADA VARCHAR2 (50) ,
NUME VARCHAR2 (20) ,
PRENUME VARCHAR2 (20) ,
ORAS VARCHAR2 (10) ,
JUDET VARCHAR2 (10) ,
ID NUMBER (3) NOT NULL,
UNIQUE (ID)
) ;
ALTER TABLE CLIENT ADD CONSTRAINT CLIENT_PK PRIMARY KEY (ID) ;
CREATE TABLE COMANDA
(
ID NUMBER (3) NOT NULL ,
DATA DATE ,
VALUARE NUMBER ,
CLIENT_ID NUMBER (3) NOT NULL,
UNIQUE (ID)
) ;
ALTER TABLE COMANDA ADD CONSTRAINT COMANDA_PK PRIMARY KEY (ID) ;
CREATE TABLE ITEMCOMANDA
(
ID NUMBER (3) NOT NULL ,
COMANDA_ID NUMBER (3) NOT NULL ,
PRODUS_ID NUMBER (3) NOT NULL,
UNIQUE (ID)
) ;
ALTER TABLE ITEMCOMANDA ADD CONSTRAINT ITEMCOMANDA_PK PRIMARY KEY (ID) ;
CREATE TABLE PRODUS
(
ID NUMBER (3) NOT NULL ,
DENUMIRE VARCHAR2 (50) ,
PRET NUMBER,
UNIQUE (ID)
) ;
ALTER TABLE PRODUS ADD CONSTRAINT PRODUS_PK PRIMARY KEY (ID) ;
ALTER TABLE COMANDA ADD CONSTRAINT CLIENT_COMANDA_FK FOREIGN KEY (CLIENT_ID) REFERENCES CLIENT (ID) ;
ALTER TABLE ITEMCOMANDA ADD CONSTRAINT ITEMCOMANDA_COMANDA_FK FOREIGN KEY (COMANDA_ID) REFERENCES COMANDA (ID) ;
ALTER TABLE ITEMCOMANDA ADD CONSTRAINT ITEMCOMANDA_PRODUS_FK FOREIGN KEY (PRODUS_ID) REFERENCES PRODUS (ID) ;
DROP TRIGGER TR;
CREATE TRIGGER TR
AFTER INSERT OR UPDATE OF PRET ON PRODUS
FOR EACH ROW
BEGIN
IF (PRODUS.ID = ITEMCOMANDA.PRODUS_ID AND ITEMCOMANDA.COMANDA_ID) THEN
UPDATE COMANDA SET VALOARE = VALOARE + PRET;
END IF;
END;
И я получаю эту ошибку:
Error(2,13): PLS-00357: Table,View Or Sequence reference 'PRODUS.ID' not allowed in this context
Я попытался modufung это немного и теперь это:
CREATE TRIGGER TR
AFTER INSERT ON PRODUS
REFERENCING NEW AS NR
FOR EACH ROW
WHEN (SELECT IC.PRODUS_ID FROM ITEMCOMANDA IC, COMANDA C WHERE IC.CIMANDA_ID = C.ID) = NR.ID
UPDATE COMANDA SET VALOARE = (VALOARE + NR.PRET);
И я получаю эту ошибку на выбор (хотя я поставляется экспрессионист):
Отчет об ошибке - ORA-00936: отсутствует выражение 00936. 00000 - "отсутствует выражение" * Причина:
* Действие:
Какая ошибка? У вас есть орфографическая ошибка VALAORE – Mihai
Извините, я забыл исправить это. Это ошибка, которую я получаю: Ошибка (2,13): PLS-00357: Таблица, Ссылка на просмотр или последовательность «PRODUS.ID» не разрешена в этом контексте –