Создать таблицу как первичный ключ оператора SELECT в Oracle - PullRequest
2 голосов
/ 29 сентября 2019

Можно ли указать, какой первичный ключ при создании таблицы используется в качестве оператора выбора?Моя цель - включить объявление первичного ключа в таблицу создания, не изменяя таблицу после создания.

CREATE TABLE suppliers
AS (SELECT company_id, address, city, state, zip
  FROM companies
  WHERE company_id < 5000);

Ответы [ 2 ]

4 голосов
/ 29 сентября 2019

Да, это возможно.Вам нужно было бы явно указать столбцы:

CREATE TABLE suppliers (
    company_id primary key, 
    address, 
    city, 
    state, 
    zip
) 
AS 
  SELECT company_id, address, city, state, zip
    FROM companies
    WHERE company_id < 5000;

Вот демоверсия

Примечание : в этом случае будет дано ограничение первичного ключасистемное имя.Если вы хотите, чтобы оно имело пользовательское имя, вам нужно будет выполнить alter table suppliers add constraint <<custom constraint name>> primary key(<<primary_key_column_name>>) после выполнения (без указания primary key) CREATE TABLE suppliers.. DDL.

0 голосов
/ 29 сентября 2019

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

Или

Создайте тот же столбец, определяющий первичный ключ, который вам нужен, и скопируйте этот столбец из таблицы компаний!

...