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