Emanoel Tadeu escreveu:
Prezados,

atualmente um sistema nosso aqui utiliza dois bancos de dados. Um mysql e outro postgresql. Recentemente chegmos a conclusão de que era melhor reunir tudo em um só banco,o postgresql. O mysql é utilizado em um data center que a empresa aluga, enquanto que o postgre é utilizado aqui mesmo com a empresa.

Recebi somente os scripts das tabelas do mysql para gerar as mesmas no postgresql. no período em que estivermos realizando a migração, os dados que antes eram destinados somente ao mysql será colocado tambem no postgresql, para irmos testando aos poucos.

Com isso, num "create table" em um script tem o seguinte:

CLI_PRT1` smallint(5) unsigned NOT NULL default '0',

Pesquisando sobre essa linha vi que unsigned não permite que valores abaixo de zero sejam inseridos. Por exemlo, caso se tente inserir o valor -52, o valor de fato a ser inserido é zero.

Como fazer isso de modo equivalente no postgresql? alguém pode me dar uma luz, por onde devo ir?



Para não permitir que sejam inseridos valores negativos utilize a cláusula CHECK na definição do campo. Veja column_constraint em:
http://www.postgresql.org/docs/8.2/interactive/sql-createtable.html
mas esta opção dá erro ao se tentar incluir um valor que não satisfaça a condição.

Para alterar o valor a ser inserido caso o valor fornecido não satisfaça a uma dada condição (no caso >= 0) utilize uma função/trigger no INSERT e/ou UPDATE.
http://www.postgresql.org/docs/8.2/interactive/sql-createtrigger.html

[]s
Osvaldo
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a