Pergunta

Como posso truncar um VARCHAR para o comprimento do campo da tabela automaticamente no derby usando o SQL?

Para ser específico:

CREATE TABLE A ( B VARCHAR(2) );
INSERT INTO A B VALUES ('1234');

lançaria uma SQLEXCECTION:

A truncation error was encountered trying to shrink VARCHAR '123' to length 2.

Existe uma maneira fácil de suprimir essa exceção?

Foi útil?

Solução

Não. Você deve cortá-lo depois de verificar os metadados. Ou, se você não quiser verificar os meta-dados sempre, deve manter seu código e banco de dados em sincronia. Mas isso não é grande coisa, é uma prática usual em validadores.

Outras dicas

Você pode aparar o Varchar antes de inseri -lo. Use a função de acabamento em seu script/procedimento Inserir.

Não estou familiarizado com o Derby, mas no MSSQL eu faço exatamente a mesma coisa, usando o TRIM para evitar o erro de truncamento (apenas onde não preciso dos dados completos), é muito mais preferível aumentar o comprimento do Varchar

Você pode usar SUBSTR:

CREATE TABLE A ( B VARCHAR(2) );
INSERT INTO A B VALUES (SUBSTR('1234', 1, 2));

Caso você use declarações preparadas:

INSERT INTO A B VALUES (SUBSTR(?, 1, 2));
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top