Это быстро переходит к обсуждению архитектуры приложения, особенно когда вопрос сводится к "что мне делать?"
Первичные ключи в Oracle действительно должны происходить из последовательностей, и, поскольку вы имеете дело со сложной логикой вставки (родительские / дочерние вставки, по крайней мере) в коде приложения, вы должны войти в существующий код, как вы говорите триггеры, вероятно, вам не помогут).
С одной стороны, вы можете отобрать прямой доступ к SQL из приложений и заставить их вызывать службы, чтобы код вставки / обновления / удаления мог быть централизованным. Или вы можете переписать свой код, используя некую архитектуру MVC. Я предполагаю, что оба излишни для вашей ситуации.
Установлен ли по крайней мере столбец id как истинный первичный ключ, поэтому существует ограничение, которое будет препятствовать возникновению дубликатов? Если нет, начните там.
Как только первичный ключ установлен, или, если он уже есть, вставки начинают выходить из строя; вы будете знать, когда они начнут терпеть неудачу, верно? Если нет, включите регистрацию ошибок.
Теперь исправьте код приложения. Пока вы там, вы должны по крайней мере написать и вызвать вспомогательный код, чтобы ваши взаимодействия с базой данных были как можно меньше мест. Затем предоставьте руководство другим разработчикам и убедитесь, что они также используют вспомогательный код.