Me gustaría fuerza de la auto incremento campo de una tabla a algún valor, he probado 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 tabla product con Id y name campo

  • Si de nuevo ¿por qué no utilizar pgAdmin e inspeccionar los comandos que se va a generar?
  • Generalmente las tablas se denominan como «productos» y no como un «producto». En este caso, la secuencia será nombrado como «products_id_seq». Asegúrese de que usted está buscando para una secuencia correcta.
InformationsquelleAutor Rad | 2011-03-17

10 Comentarios

  1. 238

    Si ha creado la tabla product con un id columna, a continuación, la secuencia no es simplemente llamado product, sino product_id_seq (que es, ${table}_${column}_seq).

    Este es el ALTER SEQUENCE comando que necesita:

    ALTER SEQUENCE product_id_seq RESTART WITH 1453

    Usted puede ver las secuencias en la base de datos mediante el \ds comando psql. Si usted \d product y mirar la restricción predeterminada para su columna, el nextval(...) convocatoria se especifique el nombre de la secuencia demasiado.

    • No está claro a partir de este mensaje lo que la sintaxis correcta es. Es: ALTERAR la SECUENCIA de product_id_seq REINICIAR CON 1453;
    • Sólo porque yo se analiza el anterior mal, esta es mi manera de repetir exactamente lo mismo. La sintaxis es ALTER SEQUENCE yourTableName_yourColumnName_seq RESTART WITH #, donde «seq» es el texto literal, y se coloca en un número de #. No se olviden de los caracteres de subrayado. 🙂
    • Por favor, tenga en cuenta que si no se utiliza el esquema público es necesario prefijo con my_schema. ALTER SEQUENCE my_schema.product_id_seq RESTART WITH 1453
    • ¿Alguien sabe por qué ALTERAR la SECUENCIA de product_id_seq REINICIAR CON (SELECT MAX(id) de producto); no funciona? La única manera que he encontrado es usar dos consultas independientes.
    • Tenga en cuenta que el valor de reiniciar con el siguiente valor que desea utilizar. Así que si usted ya tiene un registro con id 1453, usted debe RESTART WITH 1454.
    • Gracias @hughes!

  2. 140

    Este es el comando que usted está buscando, suponiendo que la secuencia de la tabla producto es product_id_seq:

    ALTERAR la SECUENCIA de product_id_seq REINICIAR CON 1453;

  3. 111

    El siguiente comando hace automáticamente para usted: también Esto eliminará todos los datos en la tabla. Así que ten cuidado.

    TRUNCATE TABLE someTable RESTART IDENTITY;
    • funciona perfecto y hace el trabajo. Gracias
    • Tenga cuidado – esto borrará todos tus datos, así
    • por supuesto, es TRUNCAR 🙂
    • Acaba de marcar; si alguien no familiarizado con SQL está buscando aquí, ya que manualmente agrega una fila a una tabla con un campo autoincrement (a través de un ORM, por ejemplo), entonces esta solución no es probablemente lo que ellos esperan.
    • ¿Qué acerca de los índices?
    • El TABLE palabra clave es redundante. TRUNCATE someTable RESTART IDENTITY; es suficiente.
    • Alguna idea de cómo iba a hacerlo con CASCADA?
    • ¿has probado TRUNCATE someTable RESTART IDENTITY CASCADE; ?
    • Para hacer referencia a tablas que usted puede hacer TRUNCATE table2, table1 RESTART IDENTITY;

  4. 52

    Para establecer la secuencia de contador:

    setval('product_id_seq', 1453);

    Si usted no sabe el nombre de la secuencia de uso de la pg_get_serial_sequence función:

    select pg_get_serial_sequence('product', 'id');
     pg_get_serial_sequence 
    ------------------------
     public.product_id_seq

    Los parámetros son el nombre de la tabla y el nombre de la columna.

    O simplemente emitir un \d product en el psql mensaje:

    => \d product
                             Table "public.product"
     Column |  Type   |                      Modifiers                       
    --------+---------+------------------------------------------------------
     id     | integer | not null default nextval('product_id_seq'::regclass)
     name   | text    | 
  5. 12

    Convertidos a partir de un comentario para el bien de visitante comodidad

    No es claro a partir de este mensaje lo que la sintaxis correcta es. Es:

    ALTER SEQUENCE product_id_seq RESTART WITH 1453;
  6. 3

    si quieres Restablecer incremento automático de la interfaz gráfica de usuario, a continuación, siga estos pasos.

    1. Ir a su Base de datos
    2. Haga clic en Público
    3. en el Listado de tablas página usted puede ver PESTAÑAS como ‘Tablas’, ‘puntos de vista’, ‘Secuencias’ como que.
    4. Haga clic en Secuencias
    5. cuando usted haga clic en «Secuencias» usted puede ver todas las Secuencias de la Lista, haga clic en la que desee Restablecer
    6. Después de que usted puede ver de opción múltiple como ‘Alter’, ‘Conjunto de Valor’, ‘Reiniciar’, ‘Reset’ etc…
    7. a continuación, haga clic en Restablecer, a continuación, añadir una Nueva Fila.
  7. 3

    — Cambiar el valor de inicio de la secuencia

    ALTER SEQUENCE project_id_seq RESTART 3000;

    Mismo, sino dinámico :

    SELECT SETVAL('project_id_seq', (SELECT MAX(id) + 1 FROM project));

    Estoy de acuerdo en el uso de un selecto es preocupante, pero funciona.

    Fuente :
    https://kylewbanks.com/blog/Adding-or-Modifying-a-PostgreSQL-Sequence-Auto-Increment

    • Si no me equivoco, PG representa sus secuencias con last_value y is_called, se inicia en (1, falso), entonces (1, true), (2, true)… por lo que el MAX(id) + 1 debe ser MAX(id) en su lugar para no saltar de un id.
  8. 2

    Para restablecer el incremento automático usted tiene que conseguir su nombre de la secuencia mediante la siguiente consulta.

    Sintaxis:

    SELECT pg_get_serial_sequence(‘tablename’,  columnname‘);

    Ejemplo:

    SELECT pg_get_serial_sequence('demo', 'autoid');

    La consulta devolverá el nombre de la secuencia de autoid como «Demo_autoid_seq»
    A continuación, utilice la siguiente consulta para restablecer el autoid

    Sintaxis:

    ALTER SEQUENCE sequenceName RESTART WITH value;

    Ejemplo:

    ALTER SEQUENCE "Demo_autoid_seq" RESTART WITH 1453;
  9. 2

    Si usted tiene una tabla con una columna de IDENTIDAD que desea restablecer el siguiente valor se puede utilizar el siguiente comando:

    ALTER TABLE <table name> 
        ALTER COLUMN <column name> 
            RESTART WITH <new value to restart with>;
  10. 1

    Para obtener la secuencia de id de uso

    SELECT pg_get_serial_sequence('tableName', 'ColumnName');

    Esto le da a usted sequesce id como tableName_ColumnName_seq

    Para Obtener el Último número de semillas uso

    select currval(pg_get_serial_sequence('tableName', 'ColumnName'));

    o si usted sabe la secuencia de id de utilizar directamente.

    select currval(tableName_ColumnName_seq);

    Se le da el último número de semillas

    Para Restablecer el número de semillas uso

    ALTER SEQUENCE tableName_ColumnName_seq RESTART WITH 45

Dejar respuesta

Please enter your comment!
Please enter your name here