Мне интересно, есть ли способ реструктурировать приведенный ниже SQL, чтобы одна строка удалялась за раз, в отличие от выполнения удаления в одной массовой операции?Причина в том, что действие удаления приводит к выполнению триггера в этой таблице и (в случаях, когда USER_ID имеет более 1 строки) пытается вставить данные в другую таблицу, в которой в качестве ключа используется метка даты-времени и то же время (до миллисекунды) пытается вставить и вызывает ошибку вставки дубликата ключа.
DELETE ORDERS
FROM LINE_ORDER ORDERS
INNER JOIN LINE_ORDER_XREF B ON B.OPRID = ORDERS.USER_ID
WHERE B.USERID = 'SYSACCT'
Идея заключалась в том, что если каждая строка удаляется отдельно как отдельная транзакция, то это делает каждую отметку даты и времени уникальной.Количество операций удаления будет небольшим, и дополнительное время обработки в этом случае не имеет значения.Можно ли структурировать в какой-то цикл или использовать курсор?Столбцы первичного идентификатора в LINE_ORDER
(USER_ID
и USER_ROLE
) являются столбцами varchar, поэтому я не верю, что могу увеличить это значение.
USER_ID USER_ROLE DYNAMIC_SW
11000_600 E_SAML N
11000_602 E_SAML N
11000_602 SUPRV N
11000_604 E_PRO N
11000_605 E_SAML N