2016-04-06 4 views
1

Я довольно неопытный с sql, и у меня есть очень простой триггер. В принципе, я хочу, чтобы TOTAL был установлен в 0, когда запись была впервые вставлена. Всего это NUMBER (9,2)Базовый Oracle триггер не работает

create or replace trigger TOTAL_INIT before insert on BILL For each row 
Begin 
    :NEW.TOTAL := 0; 
end; 

Когда я ввожу, она не устанавливает TOTAL 0, и я понятия не имею, почему.

+0

Любые ошибки компиляции? Вы можете получить ошибки компиляции, выполнив 'select * из SYS.USER_ERRORS, где NAME = 'TOTAL_INIT''. Также вы совершаете транзакцию? –

+1

Как выглядит ваш стол BILL? post create script with constraints –

+0

SQL Developer не показывает никаких ошибок в триггере, и этот запрос ничего не возвращает. – DFL

ответ

1

Как насчет этого?

alter table bill modify total number(9, 2) default 0; 

Правда, это не точно то же самое. Ваш код будет переопределять значение, указанное явно, тогда как это значение устанавливает значение 0, если не указано явное значение.

Однако для желаемой функции может быть необходим триггер.

+0

. Значение по умолчанию уже равно 0. Мы хотим, чтобы этот триггер гарантировал, что начальное значение всегда будет 0, независимо от того, что кто-то пытается вставить в него , – DFL

+0

Люди вставляют данные через SQL Plus или SQL Developer? Если это чисто программно, вам ничего не нужно. –

+0

Данные в основном вставляются через веб-приложение, но могут быть люди, вставляющие их через скрипт через SQL Developer – DFL

Смежные вопросы