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

时间:2019-09-29 11:07:11

标签: oracle plsql plsqldeveloper sql-scripts

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

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

3 个答案:

答案 0 :(得分:4)

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

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;

Here is a demo

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

答案 1 :(得分:1)

是的,有可能。您可以尝试参考以下示例。

创建表格学生(rollno,student_name,分数,约束pk_student主键(rollno,student_name)) 如 从emp中选择empno,ename,sal;

答案 2 :(得分:-1)

您可以显式创建Suppliers表,并且如果有任何列在company表中具有主键,则可以从company表中复制该结构。

创建同一列,定义所需的主键,然后从companies表复制该列!