SAPUI5:如何在 HANA 中的两个表之间创建外键 link

SAPUI5: How to create a Foreign Key link between two Tables in HANA

如以下标题所述,

我有两个 Table 第一个如下所示:

COLUMN TABLE "FirstTable"(
    "exampleId" INTEGER CS_INT NOT NULL,
    "Name" VARCHAR(50) NOT NULL,
    PRIMARY KEY ("exampleId")

) UNLOAD PRIORITY 5 AUTO MERGE;

和Second Table,应该以FirstTable的主键作为外键,这样两个表之间就建立了link。

第二Table:

COLUMN TABLE "SecondTable"(
    "scndID" INTEGER CS_INT NOT NULL,
    "exampleId" INTEGER CS_INT NOT NULL,
    PRIMARY KEY ("scndID"),
    FOREIGN KEY("exampleId")

) UNLOAD PRIORITY 5 AUTO MERGE;

问题:外键不起作用/无法识别。

问题: 如何在两个有外键的表之间创建一个link?

您非常熟悉您选择的语法。 第二个 table 所缺少的只是让 HANA 知道 table 外键应该属于什么。

您需要将 REFERENCES 表达式添加到 FOREIGN KEY 表达式。

文档中对此进行了解释 here

create COLUMN TABLE "SecondTable"(
    "scndID" INTEGER NOT NULL,
    "exampleId" INTEGER  NOT NULL,
    PRIMARY KEY ("scndID"),
    FOREIGN KEY("exampleId") REFERENCES "FirstTable"
);

顺便说一句:制作所有列的好选择 NOT NULL!保留默认值 NULLABLE 然后不得不到处处理 NULL 是一个常见的错误。

我建议 不要 在您的代码中包含列存储数据类型 (CS_INT) - 这只会造成混淆并且不要添加任何有价值的东西。 同样,除非有充分的理由不这样做,否则请使用 NVARCHAR 而不是 VARCHAR

来自 SAP HANA 2.0 SPS 04 您可以添加 .hdbconstraint 文件,该文件允许定义(仅)外键。

CONSTRAINT SECOND_TABLE_F_KEY
ON SecondTable
FOREIGN KEY (exampleId) REFERENCES FirstTable(exampleId) ON DELETE CASCADE

文档 https://help.sap.com/viewer/3823b0f33420468ba5f1cf7f59bd6bd9/2.0.05/en-US/bda54706fbda4910908871743b675ad1.html