DDL — TRUNCATE TABLE (ESP-029)
Rastreio: ESP-029 / ADR-029, issue #44. Sem entrada em
CHANGELOG.mdaté/release.
O FluentSQL gera texto SQL para TRUNCATE TABLE em PostgreSQL, Firebird e MySQL / MariaDB (dbnMySQL). Em PostgreSQL são opcionais RESTART IDENTITY e CASCADE (ver matriz abaixo). O pacote não executa DDL.
Motor de referência
- PostgreSQL: cláusulas opcionais seguem a documentação oficial: após o nome da tabela,
RESTART IDENTITY(se pedido) e depoisCASCADE(se pedido). - Firebird:
TRUNCATE TABLEestá alinhado a versões que suportam o comando (ex.: Firebird 3+);RESTART IDENTITY/CASCADEnão são emitidos — ver matriz de excepções. - MySQL / MariaDB: forma canónica
TRUNCATE TABLE nome; modificadores PG não são emitidos —ENotSupportedExceptionse forem solicitados na API fluente.
Ponto de entrada
CreateFluentDDLTruncateTable(ADialect, 'TABELA')(unitFluentSQL), devolvendoIFluentDDLTruncateTableBuilder(FluentSQL.Interfaces).
Chamar AsString para obter o comando. Opcionalmente encadear .RestartIdentity e/ou .Cascade apenas quando o dialecto for dbnPostgreSQL (ver tabela).
Exemplo mínimo
uses
FluentSQL, FluentSQL.Interfaces;
var
LSql: string;
begin
LSql := CreateFluentDDLTruncateTable(dbnFirebird, 'CLIENTES').AsString;
// TRUNCATE TABLE CLIENTES
end;
PostgreSQL — opcionais
LSql := CreateFluentDDLTruncateTable(dbnPostgreSQL, 'orders')
.RestartIdentity
.Cascade
.AsString;
// TRUNCATE TABLE orders RESTART IDENTITY CASCADE
A ordem canónica na string é sempre RESTART IDENTITY antes de CASCADE, independentemente da ordem das chamadas na API (ambos são apenas indicadores).
Matriz de comportamento (ADR-029)
| Dialeto | Núcleo TRUNCATE TABLE t | .RestartIdentity | .Cascade |
|---|---|---|---|
| PostgreSQL | Sim | Emite RESTART IDENTITY | Emite CASCADE |
| Firebird | Sim | ENotSupportedException (ESP-029) | ENotSupportedException (ESP-029) |
| MySQL | Sim | ENotSupportedException (ESP-029) | ENotSupportedException (ESP-029) |
Outros (dbnOracle, …) | ENotSupportedException até haver ramo dedicado | — | — |
Nome de tabela obrigatório; só espaços após trim → EArgumentException com rastreio ESP-029.
Ligações
- API reference — fábrica
CreateFluentDDLTruncateTable - DDL — DROP TABLE (ESP-018) — remoção de tabela vs limpeza de dados