У меня есть список значений, разделенных двоеточиями, которые хранятся в столбце varchar2
, ORDER_PARTS_LIST
, в моей базе данных Oracle.
(Я понимаю, что хранение данных в списке, подобном этому, может быть не лучшей практикой, но сейчас просто игнорируйте этот факт.)
Вот соответствующие столбцы таблицы:
ORDER_TABLE(
ORDER_NUMBER number,
ORDER_PARTS_LIST varchar(4000))
PARTS_TABLE(
PART_NUMBER varchar(20),
ASSIGNED_ORDER_NUMBER number)
У меня есть условный триггер:
create or replace trigger "ORDER_PARTS_T1"
BEFORE
insert or update or delete on "ORDER_TABLE"
for each row
begin
if :new.ORDER_PARTS_LIST LIKE '%'+PART_NUMBER+'%' then
update PARTS_TABLE set ASSIGNED_ORDER_NUMBER = :ORDER_NUMBER;
end if;
end;
Когда я запускаю этот триггер, я получаю следующую ошибку:
PLS-00201: identifier 'PART_NUMBER' must be declared
Предполагается, что триггер проверяет, какие PART_NUMBERs
в PARTS_TABLE
включены в ORDER_PARTS_LIST
, в ORDER_TABLE
, а затем вставляет ORDER_NUMBER
для соответствующей строки в ORDER_TABLE
, в столбец ASSIGNED_ORDER_NUMBER
, PARTS_TABLE
.
В конце концов, все ЧАСТИ в ЗАКАЗЕ должны быть помечены НОМЕРОМ этого ЗАКАЗА.
Имеет ли это ЛЮБОЙ смысл ???
Я не уверен точно, как правильно определить переменные в этом триггере, чтобы он работал, и, честно говоря, у меня есть несколько сомнений относительно того, будет ли триггер делать то, что, я думаю, должен, даже если бы он работал ЛЮБЫЕ предложения или помощь в получении триггера, функционирующего так, как я определил, это было бы здорово. Заранее спасибо.