在Spanner数据库中,我可以更改现有的外键以进行交错关系吗?

huangapple go评论39阅读模式
英文:

In a Spanner database can I change existing foreign keys for interleaving relationship?

问题

我正在创建一个用于创建Spanner数据库的脚本,我有一些一对多的关系,并且我想将外键用作其他数据库。如果将来我决定使用交错关系,我能否将现有的外键更改为交错关系?

创建表Singers

SingerId INT64 NOT NULL,
FirstName STRING(1024),
LastName STRING(1024),
)主键(SingerId);

创建表Albums

SingerId INT64 NOT NULL,
AlbumId INT64 NOT NULL,
AlbumTitle STRING(MAX),
)主键(SingerId,AlbumId);

ALTER TABLE Albums
ADD CONSTRAINT Albums_fk FOREIGN KEY(SingerId)REFERENCES Singers(SingerId);

这是我的示例脚本,我想使用这个脚本创建我的数据库,并在数据库创建后将来修改关系。

英文:

I am creating a script to create a Spanner database, I have some one-to-many relationships, and I would like to use foreign keys as other databases. if in the future I decide to use interleaving relationships, can I change the existing foreign keys for interleaving?

CREATE TABLE Singers
(
SingerId INT64 NOT NULL,
FirstName STRING(1024),
LastName STRING(1024),
) PRIMARY KEY (SingerId);

CREATE TABLE Albums
(
SingerId INT64 NOT NULL,
AlbumId INT64 NOT NULL,
AlbumTitle STRING( MAX),
) PRIMARY KEY (SingerId, AlbumId);

ALTER TABLE Albums
ADD CONSTRAINT Albums_fk FOREIGN KEY (SingerId) REFERENCES Singers (SingerId);

This is my example script, I would like create my database with this script, and modify the relationship in the future after the database creation

答案1

得分: 1

Spanner不支持交错存在的表格。您可以通过将“child”表格复制到另一个表格(比如child_temp)来解决这个问题。删除现有的child表格,然后使用相同的名称创建一个新的child表格,并将其与parent表格交错。将数据从child_temp复制到child表格,然后删除child_temp表格。

英文:

Spanner doesn't support interleaving existing tables. You can work around that by making a copy of the "child" table to another table (say child_temp). Drop the existing child then create a new child using the same name and interleave it with the parent. Copy data from child_temp to child then drop child_temp.

huangapple
  • 本文由 发表于 2023年7月28日 05:59:43
  • 转载请务必保留本文链接:https://go.coder-hub.com/76783661.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定