Я хочу создать триггер «вместо delete», чтобы ограничить удаление строки, когда введенное значение превышает определенную сумму.Oracle SQL вместо удаления триггера
У меня есть таблица счета-фактуры с 2 колонками: счет-фактура (InvoiceID Количество, Общее количество)
Я хочу, триггер срабатывает при попытке удалить строку, которая имеет сохраненное значение в Total> = 100 и предотвратить удаление.
До сих пор у меня есть приблизительный эскиз того, что я хочу, но я не уверен, правильный ли точный синтаксис.
CREATE OR REPLACE TRIGGER IOFD_INVOICE
INSTEAD OF DELETE ON INVOICE
BEGIN
DECLARE
TTL INTEGER;
SELECT TOTAL = TTL
FROM INVOICE
IF TTL >= 100
BEGIN
RAISERROR('Record cannot be deleted.')
ROLLBACK
END
ELSE
BEGIN
DELETE FROM INVOICE
END
END;
Я думал, что вместо триггеров может быть использован на столах, но я получаю следующее сообщение об ошибке: Сообщение
Error report -
ORA-25002: cannot create INSTEAD OF triggers on tables
25002. 00000 - "cannot create INSTEAD OF triggers on tables"
*Cause: Only BEFORE or AFTER triggers can be created on a table.
*Action: Change the trigger type to BEFORE or AFTER.
«но я не уверен, что если точный синтаксис является правильным.» что говорит г-н БД, когда вы работаете в фиктивной БД? –
@MitchWheat благодарит запомнить мне. Обновлено для добавления сообщения об ошибке – eatsleepcode