Я хочу получить команду на oracle sql


Вещи, которые я ищу для некоторой помощи с командой на Oracle DB.

Прямо сейчас я не рядом с этой базой данных, поэтому я не могу ничего попробовать.

Я запишу на бумаге ваши ответы, попробую их и дам вам знать.

Пока немного информации:

Я использую OLE-соединение с базой данных с помощью c# OLE Connect, какую команду мне нужно выполнить, чтобы получить:

Первичный ключ каждой таблицы:

У меня уже есть SQL для первичного ключа, но я не знаю, как это сделать. выполните его, чтобы изменить кастинг вещей

            "SELECT a.owner, a.TABLE_NAME, b.column_name
            FROM all_constraints a, all_cons_columns b
            WHERE a.constraint_type='P'
            AND a.constraint_name=b.constraint_name
            AND a.TABLE_NAME = 'CASTING'"

Edit: удалил If exist (я получу все таблицы и для каждой таблицы добавлю запрос drop table)

Но как это на oracle (пока я буду держать его я дам вам знать завтра утром 9-11 часов отныне я буду обновлять эту тему)

Как я проверяю, если некоторые столбцы is_identity это означает, что это auto_increment

И когда я нашел его, как проверить

           **"IDENT_SEED ,IDENT_INCR ,IDENT_CURRENT"**

Последнее:

Как я могу получить информацию от каждого таблица, такая информация:

column_name, data_type, is_nullable, character_maximum_length

Заранее благодарю вас за помощь

3 3

3 ответа:

select count(*) 
from all_tables 
where table_name = 'YOUR_TABLE_NAME_IN_UPPERCASE';

Возвращает 0, если таблица не существует (или ваш пользователь не имеет никаких прав доступа к этой таблице)

select column_name, data_type, nullable, data_length, data_scale, data_precision 
from all_tab_columns where table_name = 'YOUR_TABLE_NAME_IN_UPPERCASE';

Подробно описывает столбцы таблицы

И в Oracle нет такой вещи, как столбец identity, версия которого меньше 12c.

Спасибо вам, ребята Работа над проектом. Versiob - 11.42, поэтому автоматического включения нет И все работает идеально Вся информация о колонке работает Первичные ключи работают

Oracle не имеет никакого способа удалить таблицу с помощью предложения if exists table. Как лучший способ, просто отбросьте таблицу и проигнорируйте ошибку, используя

BEGIN
   EXECUTE IMMEDIATE 'DROP TABLE mytable';
EXCEPTION
   WHEN OTHERS THEN
      NULL;
END;

Если вы хотите получать уведомления, то используйте,

BEGIN
   EXECUTE IMMEDIATE 'DROP TABLE mytable';
EXCEPTION
   WHEN OTHERS THEN
      IF SQLCODE != -942 THEN
         RAISE;
      END IF;
END;

Относительно деталей таблицы, запрос ALL_TAB_COLUMNS.

И, IDENTITY COLUMNS доступны с Oracle 12c. На какой версии вы находитесь?

Запрос, select * from v$version чтобы узнать версию вашей базы данных.

Запрос all_tab_identity_cols для IDENTITY COLUMNS деталей.

SELECT table_name, 
       column_name,
       generation_type,
       identity_options
FROM   all_tab_identity_cols
WHERE  owner = 'TEST'
ORDER BY 1, 2;

EDIT по запросу OP относительно PRIMARY KEY таблицы.

В all_constraints столбец constraint_type будет иметь значение P для первичных ключей. Итак, в своем запросе поставьте where constraint_type = 'P'

Ваш запрос, кажется, в порядке. Просто исполни его.