Я новичок в изучении SQL и пытаюсь применить триггер к этим двум таблицам с помощью SQLcl:
prodc
(PRODC_NAME, DISCOUNTED CHAR (1) DEFAULT 'N ', PK PRIMARY KEY (PRODC_NAME));
peopleOrder
( ORDERID, PRODC_NAME,
PRIMARY KEY (ORDERID, PRODC_NAME),
FOREIGN KEY (PRODC_NAME) REFERENCES PRODC (PRODC_NAME));
Я хочу, чтобы мой триг сделал следующее:
, когда я обновляю или вставляю строки в peopleOrder
, триг следует проверить, имеет ли строка product_name
значение 'N' в столбце со скидкой, который находится в таблице product
; если у него нет значения 'N', должно появиться сообщение об ошибке.
Я пробовал много способов и следующий триггер, но когда я вставляю строки, триггер, кажется, не работает и не влияет на строки:
CREATE OR REPLACE TRIGGER constraint_1
After UPDATE OR INSERT on peopleOrder
for each row
begin
if not (:new.prodc_name in
(select prodc_name from prodc where discounted = 'N' )) then
RAISE_ERROR(-30001, 'No product can be ordered
!');
END IF;
INSERT INTO peopleOrder VALUES (:new.ORDERID, :new.PRODC_NAME);
END;
/
Моя команда вставки:
INSERT INTO peopleOder (ORDERID, PRODC_NAME)
VALUES (251, 'Puton');
, а 'Puton' имеет значение 'N' в столбце со скидкой в таблице prod c.