Pular para o conteúdo principal

DDL — ALTER TABLE ADD COLUMN (ESP-019)

Release: shipped in CHANGELOG.md [1.1.0] (2026-04-09), issue #31. Technical-debt follow-up: #32.

A partir da entrega ESP-019 / ADR-019, o FluentSQL gera texto SQL para ALTER TABLE … ADD … com uma coluna lógica por comando AsString, reutilizando os mesmos TDDLLogicalType e o mapeamento físico por dialeto que CREATE TABLE (ESP-017). O pacote não executa DDL.

Ponto de entrada

  • Schema(ADialect).AlterTableAdd('NOME_TABELA') (unit FluentSQL), devolvendo IFluentDDLAlterTableAddBuilder (FluentSQL.Interfaces). Tambem suportado via CreateFluentDDLAlterTableAddColumn.

Chame um único método ColumnInteger, ColumnVarChar, etc., encadeie as Constraints Avançadas (ESP-034) ou Foreign Keys (ESP-035) se necessário, e finalize com AsString.

Exemplo com Constraints (ESP-034 / ESP-035)

// Adicionar coluna com NOT NULL e DEFAULT
LSql := Schema(dbnPostgreSQL).AlterTableAdd('CLIENTES')
.ColumnBoolean('VIP').NotNull.DefaultValue(False)
.AsString;

// Adicionar coluna que é uma Chave Estrangeira
LSql := Schema(dbnPostgreSQL).AlterTableAdd('PEDIDOS')
.ColumnInteger('VENDEDOR_ID').References('VENDEDORES', 'ID')
.AsString;

Dialetos suportados nesta vertical

DialetoConstante
FirebirddbnFirebird
PostgreSQLdbnPostgreSQL

Outros motores levantam ENotSupportedException com mensagem que referencia ESP-019 até extensão explícita do mapeamento.

Forma canónica da string

Para Firebird e PostgreSQL nesta build, a serialização segue:

ALTER TABLE <tabela> ADD <coluna> <tipo físico>

O tipo físico é o mesmo produzido por DDLCreateTableSQL para o mesmo tipo lógico e dialeto (ADR-019).

Limitações declaradas

Leitura no código

  • FluentSQL.DDL.pas — builder (NewFluentDDLAlterTableAddColumn).
  • FluentSQL.DDL.Serialize.pasDDLAlterTableAddColumnSQL.