PostgreSQL последовательность не работает при обновлении данных столбца - PullRequest
1 голос
/ 29 января 2020

Я создал функцию для обновления столбца в таблице postgresSQL с использованием функции Sequence nextval (). Тело функции выглядит следующим образом

BEGIN
    EXECUTE 'CREATE SEQUENCE '|| sequence_name || ' START 1';
    EXECUTE 'UPDATE ' ||selected_table_name|| ' SET record_id = '||nextval(sequence_name);
    RETURN 'SUCCESS';
END;

Но когда я вызываю функцию следующим образом

SELECT staging.update_record_id('staging.test_table','staging.sq_test_table');

В моем соответствующем столбце обновляется 1 для всех записей. Но когда я просто использую следующую команду в консоли, она обновляет все значения с приращениями. Код консоли выглядит следующим образом.

update staging.test_table set record_id = nextval('staging.sq_test_table');

Кто-нибудь может дать решение для этого, был бы очень признателен

1 Ответ

1 голос
/ 29 января 2020

Я нашел решение для вопроса. Тело функции должно измениться следующим образом

BEGIN
    EXECUTE 'CREATE SEQUENCE '|| sequence_name || ' START 1';
    EXECUTE 'UPDATE ' ||selected_table_name|| ' SET record_id = nextval('''||sequence_name||''')';
    RETURN 'SUCCESS';
END;
...