Триггер для обновления другой таблицы - PullRequest
0 голосов
/ 04 марта 2011
CREATE TRIGGER update_orderline

AFTER INSERT OR UPDATE ON ORDERS

FOR EACH ROW

BEGIN

  INSERT INTO ORDERLINE(orderline_no, qty, order_no, product_no)

  VALUES (ol_no.nextval, :new.qty, :new.order_no, :new.product_no);

END;

Я пытаюсь создать триггер, который обновляет таблицу строки заказа после добавления новой записи в заказы.Но я получаю эту ошибку:

Error(3,26): PLS-00049: bad bind variable 'NEW.QTY'

Error(3,51): PLS-00049: bad bind variable 'NEW.PRODUCT_NO'

Ответы [ 2 ]

1 голос
/ 04 марта 2011

Если бы мне пришлось угадывать, в таблице заказов нет столбцов с именами 'order_no' и 'product_no'.Я могу воспроизвести ошибку в этом случае и получить сообщение переменной связывания.Так что же это за имена столбцов таблицы заказов?

ОБНОВЛЕНИЕ: нет ничего, из чего можно было бы получить новое значение для order_no или product_no или в этом отношении qty согласно вашему комментарию.Откуда вы ожидаете получения значений?

ОБНОВЛЕНИЕ: Согласно вашему обновлению в таблице заказов есть следующие столбцы:

order_no,
employee_no,
branch_no,
дата заказа,
дата доставки,
метод доставки,
tax_status,
промежуточный итог,
tax_amt,
доставка_зарядка,
total_amt,
customer_no

В этом списке столбцов я не вижу product_no или qty.Order_no есть, хотя.

0 голосов
/ 04 марта 2011

Я думаю, что нашел.

Смотрите здесь: http://www.tek -tips.com / viewthread.cfm? Qid = 1556226 & page = 14

Вы случайно обнаружили, почему, в «Oracle World» это вообще плохая форма для кодирования пользовательских имен в двойных кавычках. Ты видишь, всякий раз, когда вы определяете имя в Oracle используя двойные кавычки и любой альфа символ, который не верхний случай, то вы всегда должны использовать двойные кавычки и та же смешанная конфигурация. Если вы не используете двойные кавычки, то Oracle предполагает, что независимо от ваш случай в коде, что ваш Имя Oracle в верхнем регистре!

Итак, когда вы указали, в вашем коде, на "... INTO: new.user_idx ...", Oracle ищет "USER_IDX", который он не могу найти, так как вы определили, что столбец как * "user_idx" * - "user_idx" <> "USER_IDX".

Если вы очистите свой код от всех двойные кавычки, тогда ваши проблемы должен исчезнуть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...