У меня есть таблица под названием SEQ_TABLE, который имеет две колонки, SEQ_NAME и IDВставка в таблицу, получая NEXTVAL последовательности в PostgreSQL
SEQ_NAME | ID
----------------------
SEQ_TABLE_10 | 1
SEQ_TABLE_20 | 5
Где ID является Макс из COLUMN_1 из TABLE_10 и TABLE_20
сейчас , Я должен вставить новые записи в TABLE_10, получив nextvalue последовательности от SEQ_TABLE.
Я написал PostgreSQL запрос следующим образом:
INSERT INTO TABLE_10 (COLUMN_1, COLUMN_2, COLUMN_3) VALUES ((SELECT nextval(SEQ_TABLE)), 'Bangalore' ,NULL);
Когда я исполняю выше запрос, он дает ниже сообщение об ошибке: ********** ******* Ошибка ***
ERROR: column "SEQ_TABLE_10" does not exist
SQL state: 42703
Character: 99
Но после запроса отлично работает в MySQL базы данных:
INSERT INTO TABLE_TABLE(COLUMN_1, COLUMN_2, COLUMN_3) VALUES ((SELECT nextval('TABLE_172_SEQ','true')), 'Bangalore' ,NULL);
Что такое точный запрос Postgres для его достижения в PostgreSQL DB?
MySQL не поддерживает последовательности в отличие от Postgres. Таким образом, это означает, что следующая функция, которую вы используете в MySQL, может быть не встроенной функцией из MySQL. Можете ли вы проверить, есть ли какая-либо пользовательская функция, названная nextval в базе данных MySQL?Если вы получите эту функцию, вы можете просто скопировать функцию в базу данных Postgres и использовать ее или лучше перейти к созданию последовательности, как указано в ответе от @apm – Manish
@Manish: MySQL работает нормально. Проблема с Postgres – Satish
You возможно, неправильно понял мой комментарий. Я имел в виду, что MySQL не имеет последовательности и, следовательно, нет возможности использовать nextval fuction в нем. Но у вас есть вызов функции nextval, используемый в MySQL. Я подозреваю, что nextval fucntion, который вы используете в MySQL, может быть пользовательской функцией. Можете ли вы проверить, есть ли у вас какая-либо пользовательская функция, называемая «nextVal» в вашей базе данных MySQL? – Manish