在oracle中创建表作为select语句主键

abs*_*ute 3 oracle plsql sql-scripts plsqldeveloper

是否可以指定哪个是创建表作为选择语句的主键?我的目标是在创建表上包含主键的声明,而不是在创建后修改表。

CREATE TABLE suppliers
AS (SELECT company_id, address, city, state, zip
  FROM companies
  WHERE company_id < 5000);
Run Code Online (Sandbox Code Playgroud)

Nic*_*nov 5

是的,这是可能的。您需要明确指定列:

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;
Run Code Online (Sandbox Code Playgroud)

这是一个演示

注意:在这种情况下,主键约束将被赋予一个系统生成的名称。如果您希望它具有自定义名称,则必须alter table suppliers add constraint <<custom constraint name>> primary key(<<primary_key_column_name>>)在执行(未primary key指定)CREATE TABLE suppliers..DDL 语句后执行。