如何向 BigQuery 添加主键和外键?

问题描述 投票:0回答:2

我正在尝试学习bigquery,但我注意到我根本无法添加主键或外键。

这是一个例子:

CREATE TABLE db.VENDOR 
(
    V_CODE      INT64,
    V_NAME      String NOT NULL,
    V_CONTACT   String NOT NULL,
    V_AREACODE  String NOT NULL,
    V_PHONE     String NOT NULL,
    V_STATE     String NOT NULL,
    V_ORDER     String NOT NULL,
    PRIMARY KEY(V_Code)
);

CREATE TABLE db.PRODUCT 
(
    P_CODE     string Not Null,
    P_DESCRIPT string NOT NULL,
    P_INDATE   DATETIME NOT NULL,
    P_QOH      int64 NOT NULL,
    P_MIN      int64 NOT NULL,
    P_PRICE    NUMERIC NOT NULL,
    P_DISCOUNT NUMERIC NOT NULL,
    V_CODE     int64,

    CONSTRAINT PRODUCT_V_CODE_FK 
        FOREIGN KEY (V_CODE) REFERENCES VENDOR (V_CODE)
);

当我使用主键时,出现错误:

不支持主键

对于我得到的外键:

表名称“VENDOR”缺少数据集,而请求中未设置默认数据集

是否可以在 BigQuery 中使用 PK 或 FK?如果是,怎么办?

database google-bigquery create-table
2个回答
6
投票

查看主键外键

的文档

以下示例将 x 和 y 的主键约束添加到 pk_table 表中:

ALTER TABLE pk_table ADD PRIMARY KEY (x,y) NOT ENFORCED;

以下示例将 my_fk_name 外键约束添加到 fk_table 表中。此示例依赖于现有表 pk_table。

ALTER TABLE fk_table
ADD CONSTRAINT my_fk_name FOREIGN KEY (u, v)
REFERENCES pk_table(x, y) NOT ENFORCED;

请注意,不强制执行键约束,因此它们不会防止重复。它们主要用于帮助优化器 - 为什么创建主键和外键?


4
投票

现在bigquery添加了对添加PRIMARY、FOREIGN键作为表约束的支持。 您可以查看以下文档:

https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language#alter_table_add_constraint_statement

© www.soinside.com 2019 - 2024. All rights reserved.