tipos tipo significa que ejemplos datos mysql postgresql unsigned-integer

mysql - significa - tipos de datos postgresql varchar



¿Por qué el entero sin signo no está disponible en PostgreSQL? (3)

Me encontré con esta publicación ( ¿Cuál es la diferencia entre tinyint, smallint, mediumint, bigint e int en MySQL? ) Y me di cuenta de que PostgreSQL no admite un entero sin signo.

¿Alguien puede ayudar a explicar por qué es así?

La mayoría de las veces, utilizo un entero sin signo como clave primaria autoincrementada en MySQL. En dicho diseño, ¿cómo puedo superar esto cuando transfiero mi base de datos de MySQL a PostgreSQL?

Gracias.


No está en el estándar SQL, por lo que la necesidad general de implementarlo es menor.

Tener demasiados tipos de enteros diferentes hace que el sistema de resolución de tipo sea más frágil, por lo que hay cierta resistencia a agregar más tipos a la mezcla.

Dicho eso, no hay ninguna razón por la que no se pueda hacer. Es solo un montón de trabajo.


Puede usar una restricción CHECK, por ejemplo:

CREATE TABLE products ( product_no integer, name text, price numeric CHECK (price > 0) );

Además, PostgreSQL tiene tipos serial y bigserial para el auto-incremento.


Ya se ha respondido por qué postgresql no tiene tipos sin firmar. Sin embargo, sugeriría usar dominios para tipos sin firmar.

http://www.postgresql.org/docs/9.4/static/sql-createdomain.html

CREATE DOMAIN name [ AS ] data_type [ COLLATE collation ] [ DEFAULT expression ] [ constraint [ ... ] ] where constraint is: [ CONSTRAINT constraint_name ] { NOT NULL | NULL | CHECK (expression) }

El dominio es como un tipo pero con una restricción adicional.

Para un ejemplo concreto, podrías usar

CREATE DOMAIN uint2 AS int4 CHECK(VALUE >= 0 AND VALUE < 65536);

Esto es lo que psql da cuando intento abusar del tipo.

DS1 = # select (346346 :: uint2);

ERROR: valor para el dominio uint2 viola la restricción de verificación "uint2_check"