Gre*_*ton 3 google-cloud-spanner
假装我有模式
CREATE TABLE Account (
AccountId BYTES(MAX),
Foo STRING(1024)
) PRIMARY KEY (AccountId);"
CREATE TABLE Customer (
CustomerId BYTES(MAX),
Bar STRING(1024)
) PRIMARY KEY (CustomerId);"
Run Code Online (Sandbox Code Playgroud)
然后创建一个新表:
CREATE TABLE Order (
AccountId BYTES(MAX),
CustomerId BYTES(MAX),
Baz STRING(1024)
) PRIMARY KEY (AccountId, CustomerId);"
Run Code Online (Sandbox Code Playgroud)
我想INTERLEAVE与Account 和 在一起Customer。一个人怎么能做到呢?INTERLEAVE在构建层次结构时,我熟悉如何使用一个表,但是不确定如何使用两个表来实现这一点。
您不能将一个表插入另外两个表中,但是可以创建一个交错表的层次结构。在您的示例中,这意味着将Customer表插入表中Account,并将Order表插入Customer表中,如下所示:
CREATE TABLE Account (
AccountId BYTES(MAX),
Foo STRING(1024)
) PRIMARY KEY (AccountId);
CREATE TABLE Customer (
AccountId BYTES(MAX),
CustomerId BYTES(MAX),
Bar STRING(1024)
) PRIMARY KEY (AccountId, CustomerId),
INTERLEAVE IN PARENT Account;
CREATE TABLE Order (
AccountId BYTES(MAX),
CustomerId BYTES(MAX),
OrderId BYTES(MAX),
Baz STRING(1024)
) PRIMARY KEY (AccountId, CustomerId, OrderId),
INTERLEAVE IN PARENT Customer;
Run Code Online (Sandbox Code Playgroud)
无法按您要求的方式交错一个表在其他两个表中的原因是,交错表实际上意味着Cloud Spanner会将交错子表的行与父表物理存储在一起。如果要将一个表与两个不同的,不相关的父表进行交错,则无法确定子行的存储位置。
| 归档时间: |
|
| 查看次数: |
68 次 |
| 最近记录: |