2015-05-06 2 views
3

Я хотел бы получить все имена триггеров из схемы базы данных Oracle.Как получить все триггерные имена из базы данных с помощью Java JDBC?

Я использую getFunctions для извлечения всех функций, но я не могу найти другое для триггеров.

DatabaseMetaData dbmd; 
ResultSet result = dbmd.getFunctions(null, Ousername, null); 
+2

Возможно, описанный здесь способ поможет вам http://stackoverflow.com/questions/4305691/need-to-list-all-triggers-in-sql-server-database-with-table-name-and-tables- sch – Kuba

ответ

2

Вы можете сделать это, используя метаданные.

DatabaseMetaData dbmd = dbConnection.getMetaData(); 
ResultSet result = dbmd.getTables("%", Ousername, "%", new String[]{ "TRIGGER" }); 
while (result.next()) { 
    result.getString("TABLE_NAME") 
} 
+0

Спасибо большое! Интересно, как вы это узнали? Например. Драйвер Oracle JDBC 'dbmd.getTableTypes()' не возвращает 'TRIGGER' среди его результатов ... –

1

API JDBC не предоставляет стандартный способ извлечения информации о триггерах из DatabaseMetaData. На самом деле слово «триггер» даже не появляется в Javadoc. Принятый ответ может работать для Oracle, но он не документирован и, конечно же, не работает для других баз данных, таких как HSQL и PostgreSQL.

Единственный способ получить информацию о триггерах, не найдя недокументированного взлома бэкдора в драйвере JDBC, - это выпуск запросов к конкретной базе данных.

Смежные вопросы