0

这是一个非常基本的问题,抱歉,我只做了几个星期。我们的任务是在 Erwin 中生成模型后,在 Oracle 和 Access 中创建一个数据库。该模型已在 Erwin 中创建,我们直接从 Erwin 生成 SQL 代码以输入 Oracle。现在我正在尝试修改代码以将其输入 Access (changing VARCHAR2 to VARCHAR, NUMBER to INTEGER etc)。但是,我遇到了很多一致错误的麻烦。

这是部分SQL代码(有21个类似的表)

CREATE TABLE ASSUMPTION
(
    ASSUMPTION_ID        NUMBER(25) NOT NULL ,
    COUNTY               VARCHAR2(23) NOT NULL ,
    CLAIM_HISTORY        VARCHAR2(200) NULL ,
    ADDITIONAL_PROPERTY  VARCHAR2(200) NULL ,
    REBUILD_COST         DECIMAL(6,2) NULL ,
    MAIN_RESIDENCE       VARCHAR2(3) NOT NULL ,
    CURRENT_INSURANCE_COVER VARCHAR2(200) NULL ,
    CRIMINAL_HISTORY     VARCHAR2(200) NULL ,
    BUSINESS_USE         VARCHAR2(3) NOT NULL ,
    CUSTOMER_ACCEPTANCE  VARCHAR2(3) NOT NULL ,
    QUOTE_ID             NUMBER(25) NOT NULL 
);



ALTER TABLE ASSUMPTION
    ADD CONSTRAINT  XPKASSUPMTION PRIMARY KEY (ASSUMPTION_ID,QUOTE_ID);

我所做的更改使它像这样

CREATE TABLE ASSUMPTION
(
    ASSUMPTION_ID        INTEGER(25) NOT NULL ,
    COUNTY               VARCHAR(23) NOT NULL ,
    CLAIM_HISTORY        VARCHAR(200) NULL ,
    ADDITIONAL_PROPERTY  VARCHAR(200) NULL ,
    REBUILD_COST         CURRENCY NULL ,
    MAIN_RESIDENCE       VARCHAR(3) NOT NULL ,
    CURRENT_INSURANCE_COVER VARCHAR(200) NULL ,
    CRIMINAL_HISTORY     VARCHAR(200) NULL ,
    BUSINESS_USE         VARCHAR(3) NOT NULL ,
    CUSTOMER_ACCEPTANCE  VARCHAR(3) NOT NULL ,
    QUOTE_ID             INTEGER(25) NOT NULL 
);

其次是相同的

ALTER TABLE ASSUMPTION
    ADD CONSTRAINT  XPKASSUPMTION PRIMARY KEY (ASSUMPTION_ID,QUOTE_ID);

如果人们能指出我哪里出错了,我将不胜感激。它始终返回语法错误。

此外,有必要在“customer_acceptance 框”中要求接受或“是”,以便他们继续访问表单的其余部分。我是否应该尝试在这个初始假设框中指定这一点?是否可以只选择 Erwin 文件并直接在 Oracle 或 Access 中打开它包含的代码,或者自动转换它而不是手动转换它?

谢谢。

4

1 回答 1

0

这里发生了很多事情。

首先,integer(25) 字段。这些是 id 字段,因此可能是非易失性的。我建议您将这些字段更改为 text(25) 并使用仅限数字的域限制。这样,您将避免不同平台之间的可比性问题。一个附带问题,它真的需要这么大吗?如果是这样,您可能需要考虑使用 UUID。这将为您提供一个 16 位文本值:

  • 具有比整数(25)更大的范围
  • 几乎可以保证跨平台是独一无二的

其次,您似乎正在尝试手动更改生成的 Oracle 代码。我建议您改为返回模型,更改要访问的目标数据库,然后为您正向工程访问代码。

我希望这个帮助能祝你好运。

于 2015-06-25T00:51:33.703 回答