Search code examples
google-cloud-platformgoogle-cloud-spanner

Can I have multiple tables with same parent in Google Spanner


I read that we can have maximum table interleaving depth of 6 in Google Spanner and an interleaved table can have only one direct parent table, But can we have multiple tables with same parent?

For Example:

TableA (root)
TableB (INTERLEAVE IN PARENT TableA)
TableC (INTERLEAVE IN PARENT TableA)

Solution

  • Yes you can. The following DDL is for example accepted:

    CREATE TABLE `PARENT` (
      ID INT64 NOT NULL,
      DESCRIPTION STRING(100) NOT NULL,
    ) PRIMARY KEY(ID);
    
    CREATE TABLE CHILD1 (
      ID INT64 NOT NULL,
      CHILD1_ID INT64 NOT NULL,
      CHILD1_DESCRIPTION STRING(100) NOT NULL,
    ) PRIMARY KEY(ID, CHILD1_ID),
      INTERLEAVE IN PARENT `PARENT` ON DELETE NO ACTION;
    
    CREATE TABLE CHILD2 (
      ID INT64 NOT NULL,
      CHILD2_ID INT64 NOT NULL,
      CHILD2_DESCRIPTION STRING(100) NOT NULL,
    ) PRIMARY KEY(ID, CHILD2_ID),
      INTERLEAVE IN PARENT `PARENT` ON DELETE NO ACTION