2016-02-04 5 views
0

У меня есть таблица, которая не имеет первичного ключа. Мне нужно было добавить первичный ключ в таблицу, поэтому я добавил столбец с именем «ID». Я пытаюсь использовать rowid для вставки уникальных идентификаторов в этот новый столбец. Как мне поступить с получением строки при вставке новой записи. Это находится в базе данных Progress.Получить RowID on Progress Вставить

INSERT INTO PUB.DETAILS (LASTUPDATED, FORMERVALUE, NEWVALUE, ID) 
VALUES ('09/16/2015', 'NEW ITEM', 'ESISTING ITEM', '?') 
+0

Если вы делаете это автоматически инкрементным, чем не нужно передавать его значение – Meer

+0

@MeerDeen В базе данных «Прогресс» нет такой вещи ... – Jensd

+1

Кстати, в столбце базы данных имеется основная «gotcha» с использованием ROWID или RECID; целостность этих значений не сохранится с дампом и нагрузкой ... –

ответ

1

База данных прогресса не обязательно содержит ключ. По крайней мере, не в «SQL-способе». Клавиши (а также отношения) определяются бизнес-логикой (то есть, как вы используете поля.

Поскольку вы, кажется, работаете с используемой базой данных, это может быть просто то, что вам не нужно ключ - есть ли какая-то логика, которая уже выполняет эту работу?

В базе данных Progress есть что-то вроде «последовательности», которые можно использовать для увеличения значения - как получить к ним доступ с помощью odbc или sql. Я действительно не знаю, знаю.

In Progress ABL (4GL) вы бы сказали NEXT-VALUE(sequence-name)

Here's some help about SQL and Progress dbs ,

-1

Просто установите свой идентификатор колонки в автоинкремент, так что вам не нужно знать последний вставленный.

+2

У Progress db нет автоинкремента. По крайней мере, насколько мне известно, они не являются базами данных SQL. – Jensd