【问题标题】:How can I create a sequential SQL creation script for Oracle?如何为 Oracle 创建顺序 SQL 创建脚本?
【发布时间】:2010-06-28 14:58:50
【问题描述】:

类似:

create table Employee(
ID int primary key,
Name nvarchar(200)
IDArea int foreign key references Area(ID)
);

go

create table Area(
ID int primary key,
Name nvarchar(200)
);

Oracle 中是否存在类似的东西?

【问题讨论】:

    标签: oracle scripting ddl


    【解决方案1】:

    是的,只需省略“GO”关键字并将语句放入文件中:

    create table Area(
    ID int primary key,
    Name nvarchar2(200)
    );
    
    create table Employee(
    ID int primary key,
    Name nvarchar2(200),
    IDArea int references Area(ID)
    );
    

    您必须在引用它的外键之前创建区域主键,所以我交换了它们。 Oracle 中的外键语法也略有不同。

    【讨论】:

    • 这段代码能用吗?我认为 Oracle 中的外键与 Microsoft SQL 不同。
    • 语法几乎没问题 - 我刚刚在我的回答中更正了 Oracle 的 FK 语法。您还需要按父/子顺序创建约束 - 在 Area 表存在之前,您不能引用 Area(ID)。
    • 哦,我将 nvarchar 更改为 nvarchar2 以使其在 Oracle 中工作。但是 VARCHAR2(没有 N)是 Oracle 中更常见的字符串数据类型。
    【解决方案2】:

    您应该首先创建主表,忘记 nvarchar 数据类型,最终脚本将是:

    create table Area( 
    ID number primary key, 
    Name varchar2(200) 
    ); 
    
    create table Employee( 
    ID number primary key, 
    Name varchar2(200) ,
    IDArea number, constraint fk_idarea foreign key (idarea) references Area(ID) 
    ); 
    

    【讨论】:

      猜你喜欢
      • 2012-01-25
      • 1970-01-01
      • 2017-03-29
      • 2023-01-20
      • 2014-12-02
      • 1970-01-01
      • 1970-01-01
      • 2021-01-28
      • 1970-01-01
      相关资源
      最近更新 更多