Estoy jugando con los tipos de columnas y los valores predeterminados, y encontré dos columnas, ambas smallint pero con diferentes valores predeterminados:
0(0)::smallint Cuando cambio 2 al valor que tiene 1, ambos son iguales y nada parece haber cambiado. Por supuesto, busqué en Google para encontrar la respuesta a mi pregunta y descubrí que :: se usa para la conversión de tipos. Pero me pregunto, si es un valor predeterminado, ¿por qué necesitaría una conversión de tipos?
No hay diferencia, y el yeso no es necesario.
# create table somesmallints (a smallint default 0, b smallint default 0::smallint, c smallint default (0)::smallint); CREATE TABLE # \d+ somesmallints; Table "public.somesmallints" Column | Type | Collation | Nullable | Default | Storage | Stats target | Description --------+----------+-----------+----------+---------------+---------+--------------+------------- a | smallint | | | 0 | plain | | b | smallint | | | (0)::smallint | plain | | c | smallint | | | (0)::smallint | plain | | # select 0 = 0::smallint; ?column? ---------- t (1 row)