Создание копии базовой таблицы
Спецификация

См. спецификацию пункта «Создание таблицы».

Синтаксические правила
  1. < Исходная таблица > должна ссылаться на имя базой таблицы (представления запрещены).

  2. < Исходная таблица > может ссылаться на глобальную временную таблицу. В этом случае < целевой таблицей > может быть как глобальная временная таблица, так и базовая.

    create or replace global temporary table glb_tmp (id int primary key,name char(10),id_ref1 int on commit delete rows);
    create or replace global temporary table glb_tmp_copy like glb_tmp;
    create or replace table glb_tmp_copy like glb_tmp;
Общие правила
  1. Конструкция < определение копии таблицы > используется для создания пустой < целевой таблицы > на основе определения < исходной таблицы >, включая все имена столбцов, их типы данных, их ненулевые ограничения и индексы, определенные в < исходной таблице >.

    create or replace table t1 (i int);
    create or replace table t2 like t1;
    create or replace table "Тестер".t2 like t1;
  2. Для создания таблицы пользователь должен иметь уровень прав RESOURCE или DBA.

  3. Для создания копии таблицы на < исходную таблицу > требуется привилегия SELECT.

  4. В момент выполнения копии таблицы < исходная таблица > не должна быть заблокирована.

  5. При копировании таблицы файловые параметры < исходной таблицы > применяются для < целевой таблицы >.

    create or replace table tst1(i int, j int) datafiles 2 ('SY00' 10, 'SY00' 11) indexfiles 3 ('SY00' 10, 'SY00' 11, 'SY00' 25);
    create or replace table tst2 like tst1;
    inl > show tst1
    …
    * Файлов индексов            : 3 ("SY00" 10,"SY00" 11,"SY00" 25)
    * Файлов данных              : 2 ("SY00" 10,"SY00" 11)
    
    inl >show tst2
    * Файлов индексов            : 3 ("SY00" 10,"SY00" 11,"SY00" 25)
    * Файлов данных              : 2 ("SY00" 10,"SY00" 11)
  6. При копировании таблицы внешние ключи не копируются.

  7. При копировании таблицы информация о генерируемых столбцах < исходной таблицы > сохраняется в < целевой таблице >, поэтому в < целевой таблице > < генерируемые значения > формироваться будут.

    create or replace table tst1(i int, j int, k int generated as (i+j));
    create or replace table tst2 like tst1;
    inl >show tst1
    …
    K                  INTEGER GENERATED ALWAYS AS (("I"="J"))
    inl >show tst2
    …
    K                  INTEGER GENERATED ALWAYS AS (("I"="J"))
    insert into tst2(i,j) values(1,2);
    insert into tst2(i,j) values(3,4);
    select * from tst2;
    I J K
    1 2 3
    3 4 7