Me gustaría forzar el campo de incremento automático de una tabla a algún valor, intenté con esto:
ALTER TABLE product AUTO_INCREMENT = 1453
Y
ALTER SEQUENCE product RESTART WITH 1453;
ERROR: relation "your_sequence_name" does not exist
Soy nuevo en postgres :(
Tengo una mesa product
con Id
y name
campo
Respuestas:
Si creó la tabla
product
con unaid
columna, entonces la secuencia no se llama simplementeproduct
, sino más bienproduct_id_seq
(es decir,${table}_${column}_seq
).Este es el
ALTER SEQUENCE
comando que necesitas:Puede ver las secuencias en su base de datos usando el
\ds
comando en psql. Si lo hace\d product
y observa la restricción predeterminada para su columna, lanextval(...)
llamada también especificará el nombre de la secuencia.fuente
ALTER SEQUENCE yourTableName_yourColumnName_seq RESTART WITH #
, donde "seq" es el texto literal, y pones un número para #. No descuides los guiones bajos. :-)ALTER SEQUENCE my_schema.product_id_seq RESTART WITH 1453
1453
, debería hacerloRESTART WITH 1454
.Aquí está el comando que está buscando, suponiendo que su secuencia para la tabla de productos sea product_id_seq:
fuente
El siguiente comando hace esto automáticamente por usted: Esto también eliminará todos los datos en la tabla. Así que ten cuidado.
fuente
TABLE
palabra clave es redundante.TRUNCATE someTable RESTART IDENTITY;
es suficiente.TRUNCATE someTable RESTART IDENTITY CASCADE;
?Para configurar el contador de secuencia:
Si no conoce el nombre de la secuencia, use la
pg_get_serial_sequence
función:Los parámetros son el nombre de la tabla y el nombre de la columna.
O simplemente emita un mensaje
\d product
en elpsql
indicador:fuente
- Cambiar el valor inicial de la secuencia
Lo mismo pero dinámico:
Estoy de acuerdo en que el uso de un SELECT es inquietante, pero funciona.
Fuente: https://kylewbanks.com/blog/Adding-or-Modifying-a-PostgreSQL-Sequence-Auto-Increment
fuente
brew services restart postgresql
Convertido de comentario por conveniencia del visitante
No está claro en este mensaje cuál es la sintaxis correcta. Es:
fuente
si desea restablecer el incremento automático desde la GUI, siga estos pasos.
fuente
Si tiene una tabla con una columna IDENTIDAD en la que desea restablecer el siguiente valor, puede usar el siguiente comando:
fuente
sequence
o NO pueda truncar la tabla. Creo que es la mejor respuestaPara restablecer el incremento automático, debe obtener su nombre de secuencia mediante la siguiente consulta.
Sintaxis:
Ejemplo:
La consulta devolverá el nombre de secuencia del autoid como "Demo_autoid_seq". Luego use la siguiente consulta para restablecer el autoid
Sintaxis:
Ejemplo:
fuente
Para obtener el id de secuencia use
Esto le dará una identificación de secuencia como tableName_ColumnName_seq
Para obtener el último número de semilla, use
o si sabe que la identificación de secuencia ya la usa directamente.
Te dará el último número de semilla
Para restablecer el uso del número de semilla
fuente
Use esta consulta para verificar cuál es la clave de secuencia con esquema y tabla,
Use esta consulta para aumentar el valor de incremento uno por uno,
Al insertar en la tabla, el siguiente valor incrementado se usará como la tecla (111).
Use esta consulta para establecer un valor específico como el valor incrementado
Al insertar en la tabla, el siguiente valor incrementado se usará como la tecla (121).
fuente
Tenga en cuenta que si tiene el nombre de la tabla con '_', se elimina en el nombre de la secuencia.
Por ejemplo, nombre de la tabla: columna de user_tokens: id Nombre de secuencia: usertokens_id_seq
fuente