Меню

Как переименовать таблицу в Oracle чтобы обновить все внешние ключи ограничения триггеры и последовательнос



SQL Изменить таблицу

SQL ALTER TABLE

Инструкция ALTER TABLE используется для добавления, удаления или изменения столбцов в существующей таблице.

Инструкция ALTER TABLE также используется для добавления и удаления различных ограничений на существующую таблицу.

ALTER TABLE — ADD column

Чтобы добавить столбец в таблицу, используйте следующее Синтаксис:

Следующий SQL — добавляет колонку «Email» для таблицы «Customers»:

Пример

ALTER TABLE — DROP COLUMN

Чтобы удалить столбец в таблице, используйте следующую команду синтаксис (обратите внимание, что некоторые системы баз данных не позволяют удалить столбец):

Следующий SQL удаляет столбец «Email» из таблицы «Customers»:

Пример

ALTER TABLE — ALTER/MODIFY COLUMN

Чтобы изменить тип данных столбца в таблице, используйте следующие синтаксис:

SQL Сервер / MS Доступ:

My SQL / Оракул (предыдущая версия 10G):

Оракул 10G и более поздние версии:

SQL Пример ALTER TABLE

Посмотрите на таблицу «Persons»:

ID LastName FirstName Address City
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Теперь мы хотим добавить столбец с именем «DateOfBirth» в таблицу «Persons».

Мы используем следующую инструкцию SQL:

Обратите внимание, что новый столбец «DateOfBirth» имеет тип date и будет содержать дату. Тип данных указывает, какой тип данных может содержать столбец. Для получения полного описания всех типов данных, доступных в MS Access, MySQL и SQL Server, перейдите к нашему полному Справочнику типов данных.

Таблица «Persons» теперь будет выглядеть так:

ID LastName FirstName Address City DateOfBirth
1 Hansen Ola Timoteivn 10 Sandnes
2 Svendson Tove Borgvn 23 Sandnes
3 Pettersen Kari Storgt 20 Stavanger

Пример изменения типа данных

Теперь мы хотим изменить тип данных столбца с именем «DateOfBirth» в таблице «Persons».

Мы используем следующую инструкцию SQL:

Обратите внимание, что столбец «DateOfBirth» теперь имеет тип year и будет содержать year в двух или четырехзначном формате.

Пример DROP COLUMN

В первую очередь, мы хотим удалить столбец с именем «DateOfBirth» в таблице «Persons».

Мы используем следующую инструкцию SQL:

Таблица «Persons» теперь будет выглядеть так:

Источник

Как переименовать таблицу в Oracle, чтобы обновить все внешние ключи, ограничения, триггеры и последовательности и сохранить все существующие данные?

Мне нужно переименовать таблицу в Oracle, но я хочу быть уверен, что все внешние ключи, ограничения, триггеры и последовательности, ссылающиеся на таблицу, будут обновлены, чтобы использовать новое имя.

Читайте также:  Шкала и таблица перевода баллов ЕГЭ в 2021 году

Как я могу быть уверен, что ничего не сломал?

Обратите внимание, что я хочу сохранить все существующие данные, содержащиеся в таблице.

3 ответов:

Это зависит от того, что вы подразумеваете под «любые внешние ключи, ограничения, триггеры и последовательности, ссылающиеся на таблицу, обновляются для использования нового имени.»

Все существующие индексы, ограничения и триггеры для переименовываемой таблицы будут автоматически ссылаться на новое имя. Однако любые соглашения об именовании, используемые для этих объектов, не будут автоматически использовать обновленное имя. Например, если первичный ключ для TABLE_NAME обычно называется TABLE_NAME_PK , переименование TABLE_NAME в NEW_TABLE_NAME не будет автоматически переименуйте ограничение первичного ключа в NEW_TABLE_NAME_PK . Необходимо проверить код-пакеты, процедуры и функции, которые ссылаются на старое имя таблицы, а также любые триггеры, которые ссылаются на старое имя таблицы. Аналогично, представления против старого имени таблицы также будут ломаться. Представление ALL_DEPENDENCIES может помочь определить, какие из этих объектов нуждаются в обновлении.

Если вы

Все существующие ограничения (внешний ключ и другие ограничения) и триггеры будут ссылаться на вновь переименованный объект. Последовательности не имеют никакого отношения к таблицам, поэтому не будет никакого влияния на последовательности (хотя если вы подразумеваете, что ссылаетесь на последовательность в триггере на таблице, триггер будет продолжать ссылаться на ту же последовательность после переименования). Однако любые хранимые процедуры, которые вы написали и ссылаетесь на старое имя таблицы, будут нуждаться в этом. будет обновлено для ссылки на новое имя таблицы.

Теперь, хотя ограничения и триггеры будут продолжать работать правильно, они сохранят свои первоначальные имена. Если у вас есть соглашения об именовании для этих объектов, которые вы хотите сохранить после имени таблицы, вам нужно будет сделать больше. Например, если вы хотите, чтобы триггер уровня строки перед вставкой в таблицу FOO был назван TRG_BI_FOO , и вы переименуете таблицу в BAR , вам нужно будет явно изменить триггер, чтобы изменить его имени

Аналогично, вам нужно переименовать ограничения и индексы

Сохранит зависимости и данные таблицы, но всегда может быть фрагмент PL / SQL, который ссылается на старое имя, которое станет недействительным.

Источник

RENAME

You cannot roll back a RENAME statement.

Читайте также:  Как начать пункт с таблицей

Use the RENAME statement to rename a table, view, sequence, or private synonym.

Oracle Database automatically transfers integrity constraints, indexes, and grants on the old object to the new object.

Oracle Database invalidates all objects that depend on the renamed object, such as views, synonyms, and stored procedures and functions that refer to a renamed table.

The object must be in your own schema.

Specify the name of an existing table, view, sequence, or private synonym.

Specify the new name to be given to the existing object. The new name must not already be used by another schema object in the same namespace and must follow the rules for naming schema objects.

Restrictions on Renaming Objects Renaming objects is subject to the following restrictions:

You cannot rename a public synonym. Instead, drop the public synonym and then re-create the public synonym with the new name.

You cannot rename a type synonym that has any dependent tables or dependent valid user-defined object types.

Renaming a Database Object: Example The following example uses a copy of the sample table hr.departments . To change the name of table departments_new to emp_departments , issue the following statement:

You cannot use this statement directly to rename columns. However, you can rename a column using the ALTER TABLE . rename_column_clause .

Another way to rename a column is to use the RENAME statement together with the CREATE TABLE statement with AS subquery . This method is useful if you are changing the structure of a table rather than only renaming a column. The following statements re-create the sample table hr.job_history , renaming a column from department_id to dept_id :

Any integrity constraints defined on table job_history will be lost in the preceding example. You will have to redefine them on the new job_history table using an ALTER TABLE statement.

Читайте также:  Запрос таблицы блокировки Oracle и метод разблокировки

Источник

Переименование таблиц (компонент Database Engine)

Применимо к: SQL Server 2016 (13.x); и более поздние версии База данных SQL Azure Управляемый экземпляр SQL Azure

Переименование таблицы в SQL Server или базе данных SQL Azure.

Чтобы переименовать таблицу в Azure Synapse Analytics или Parallel Data Warehouse, используйте инструкцию RENAME OBJECT.

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

В этом разделе

Перед началом работы

Переименование таблицы с использованием:

Перед началом

Ограничения

Переименование таблицы не приводит к автоматическому переименованию ссылок на эту таблицу. Необходимо вручную изменить все объекты, которые ссылаются на переименованную таблицу. Например, если переименована таблица и на эту таблицу имеется ссылка в триггере, то необходимо изменить триггер, указав новое имя таблицы. Используйте представление каталога sys.sql_expression_dependencies , чтобы составить список зависимостей для таблицы перед переименованием.

безопасность

Permissions

Требуется разрешение ALTER на таблицу.

Использование среды SQL Server Management Studio

Переименование таблицы

В обозревателе объектов правой кнопкой мыши щелкните таблицу, имя которой хотите переименовать, и в контекстном меню выберите пункт Конструирование .

В меню Просмотр выберите команду Свойства.

В поле Имя окна Свойства введите новое имя таблицы.

Чтобы отменить это действие, нажмите клавишу ESC перед тем, как выйти из этого поля.

В меню «Файл» выберите команду Сохранить имя_таблицы.

Переименование таблицы

В обозревателе объектов подключитесь к экземпляру компонента Компонент Database Engine.

На стандартной панели выберите пункт Создать запрос.

В следующем примере столбец SalesTerritory в таблице SalesTerr переименовывается в Sales . Скопируйте приведенный ниже пример в окно запроса и нажмите кнопку Выполнить.

Обратите внимание, что синтаксис sp_rename для @objname должен включать схему имени старой таблицы, но @newname не включает имя схемы при задании нового имени таблицы.

Дополнительные примеры см. в статье sp_rename (Transact-SQL).

Источник