Cita:
Iniciado por huesos52 En cuanto a tu primera pregunta...
Cuando declaras un campo serial (En realidad serial no es un tipo de dato) sino una representación de una acción que toma el campo. Realmente lo que hace es declarar un campo entero e implicitamente, crear una secuencia que es añadida como valor por defecto.
Mirar ejemplo:
Código SQL:
Ver originalpruebas=> CREATE TABLE prueba_serial(contador SERIAL);
NOTICE: CREATE TABLE will CREATE implicit SEQUENCE "prueba_serial_contador_seq" FOR serial COLUMN "
prueba_serial.contador"
CREATE TABLE
pruebas=> \d prueba_serial;
Tabla ½public.prueba_serial╗
Columna | Tipo | Modificadores
----------+---------+------------------------------------------------------------------
contador | INTEGER | NOT NULL DEFAULT NEXTVAL('prueba_serial_contador_seq'::regclass)
El rango que soporta un tipo de dato integer que te soporta hasta 2147483647. Si consideras que es un numero muy pequeño, puedes declararlo con bigserial que hace lo mismo que te dije anteriormente, pero no pone el campo como integer, sino como bigint. El bigint va hasta 9223372036854775807.
En conclusión, Sin importar si con OID permita llevar mas secuencias, creo que nunca nos veremos limitados por el uso de tipo de datos serial.
Segunda pregunta...
La verdad, no soy experto en el tema, pero alguna vez leí que si se pueden presentar datos repetidos, siempre y cuando no sean del mismo objeto. Lo de la condición, la verdad no se.
saludos y espero haberte ayudado
Muchas gracias de antemano, última otra pregunta, aclarando lo antes dicho cuando mencionas "Sin importar si con OID permita llevar mas secuencias, creo que nunca nos veremos limitados por el uso de tipo de datos serial", me dices que ¿con OID podemos tener mas registro o secuencias que cuando utilizamos SERIAL?, esa es mi duda soy un poco inesperto en el tema. Gracias.