Согласно Oracle Docs , поиск строки - это именно то, что вам нужно сделать:
Распознавание переменного текста в сообщениях
Чтобы помочь вам найти и исправить ошибки, Oracle встраивает имена объектов, номера,
и символьные строки в некоторых сообщениях. Эти встроенные переменные
представлены строкой, числом или символом, в зависимости от ситуации. За
Пример:
ORA-00020: maximum number of processes (number) exceeded
Предыдущее сообщение может выглядеть следующим образом:
ORA-00020: maximum number of processes (50) exceeded
В своих документах Oracle подчеркивает, что строки будут обновляться в разделе «Точность сообщений». Это довольно убедительное предположение, что они намерены выполнить поиск строк.
Кроме того, согласно этого веб-сайта , структура ошибки Oracle также довольно сильно подразумевает, что они намереваются выполнять поиск по строкам, поскольку для структуры данных не хватает чего-либо еще, что вы можете получить:
array(4) {
["code"]=>int(942)
["message"]=>string(40) "ORA-00942: table or view does not exist"
["offset"]=>int(14)
["sqltext"]=>string(32) "select * from non_existing_table"
}
Этот вывод показывает следующую информацию:
Переменная $ erris массив с четырьмя элементами.
Первый элемент доступен по ключу «код», а его значение - номер 942.
Второе значение доступно с помощью клавиши «message», а значением является строка «ORA-00942: таблица или представление не существует».
Третье значение доступно с помощью клавиши «смещение», а его значением является число 14. Это символ перед именем
несуществующая таблица.
Четвертый член - это проблемное сообщение SQL, которое в первую очередь вызывает ошибку.
Я согласен с вами; было бы замечательно, если бы был лучший способ получить имя ограничения, которое вы нарушаете, но согласование строк, кажется, является намеченным способом.