> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-vortex-format.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> O motor de banco de dados Overlay expõe a união das tabelas de vários bancos de dados existentes.

# Overlay

O motor de banco de dados `Overlay` expõe a união das tabelas de vários bancos de dados existentes.

<h2 id="creating-a-database">
  Criando um banco de dados
</h2>

```sql theme={null}
CREATE DATABASE overlay_db
ENGINE = Overlay(db1[, db2, ...]);
```

O nome de uma tabela é resolvido nos bancos de dados de origem na ordem em que eles são listados: prevalece o primeiro banco de dados que tiver uma tabela com esse nome.

O banco de dados não possui tabelas próprias. Cada tabela do banco de dados overlay se comporta como uma tabela [`Alias`](/pt-BR/reference/engines/table-engines/special/alias) da tabela correspondente no banco de dados de origem: tanto a leitura quanto a gravação são direcionadas à tabela de origem.
As operações `CREATE`, `DROP`, `RENAME`, `ATTACH` e `DETACH` de tabelas dentro do banco de dados overlay não são suportadas.

Os bancos de dados de origem são resolvidos pelo nome a cada acesso: quando um banco de dados de origem é removido, suas tabelas desaparecem do banco de dados overlay e voltam a aparecer quando ele é recriado.
Um banco de dados `Overlay` não pode ser usado como origem de outro banco de dados `Overlay`.

<h2 id="access-control">
  Controle de acesso
</h2>

Assim como em uma tabela `Alias`, trabalhar com uma tabela do banco de dados overlay exige concessões tanto no banco de dados overlay quanto na tabela de origem, e as row policies de ambos são aplicadas.
Uma tabela do banco de dados overlay só fica visível para usuários que consigam ver tanto o banco de dados overlay quanto a tabela de origem (ou seja, que tenham o privilégio `SHOW TABLES` em ambos).
Um nome é resolvido no primeiro banco de dados de origem em que o usuário consiga ver uma tabela com esse nome: uma tabela oculta para o usuário é ignorada, como se não existisse.

<h2 id="example">
  Exemplo
</h2>

```sql theme={null}
CREATE DATABASE db1;
CREATE DATABASE db2;
CREATE TABLE db1.a (x UInt8) ENGINE = Memory;
CREATE TABLE db2.b (y String) ENGINE = Memory;
INSERT INTO db2.b VALUES ('Hello');
CREATE DATABASE overlay_db ENGINE = Overlay(db1, db2);
SELECT name, engine FROM system.tables WHERE database = 'overlay_db' ORDER BY name;
SELECT * FROM overlay_db.b;
```

```response theme={null}
┌─name─┬─engine─┐
│ a    │ Alias  │
│ b    │ Alias  │
└──────┴────────┘
┌─y─────┐
│ Hello │
└───────┘
```
