powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Использование Autoincrement
6 сообщений из 6, страница 1 из 1
Использование Autoincrement
    #33516710
Guest-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В качестве первичного ключа использую тип INT AUTOINC
Как получить значение после INSERT ?
Типа SCOPE_IDENTITY() в MSSQL.
...
Рейтинг: 0 / 0
Использование Autoincrement
    #33516728
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
CREATE CURSOR Test (ID i autoinc, Texts c( 10 ))

INSERT INTO Test (Texts) VALUES ('2')

?Test.ID
...
Рейтинг: 0 / 0
Использование Autoincrement
    #33517374
Guest-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточню вопрос, речь идет о транзакции... для примера

CREATE TABLE Table_Parent (Parent_ID i autoinc, Texts c(10))
CREATE TABLE Table_Child (Child_ID i autoinc, ;
Parent_ID i REFERENCES Table_Parent, ;
Texts c(10))
...
= Test("Text_Parent", "Text_Child")
...
*Хранимая процедура
PROCEDURE Test
PARAMETERS Text_Parent, Text_Child
LOCAL Current_Parent_ID
BEGIN TRANSACTION
INSERT INTO Table_Parent (Texts) ;
VALUES (Text_Parent)
Current_Parent_ID = xxx && где взять ???
INSERT INTO Table_Child (Parent_ID, Texts) ;
VALUES (Current_Parent_ID, Text_Child)
END TRANSACTION
...
Рейтинг: 0 / 0
Использование Autoincrement
    #33517455
Guest-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В предыдущем примере должно быть

CREATE TABLE Table_Parent (Parent_ID i autoinc NOT NULL PRIMARY KEY, ;
Texts c(10))
CREATE TABLE Table_Child (Child_ID i autoinc NOT NULL PRIMARY KEY, ;
Parent_ID i REFERENCES Table_Parent, ;
Texts c(10))
...
Рейтинг: 0 / 0
Использование Autoincrement
    #33517475
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да там же. Непосредственно в таблице Parent.

"Фишка" в том, что при создании новой записи (не важно, каким способом) указатель записи автоматически встает на только что созданную запись в указанной рабочей области.

Т.е. сразу после команды вставки достаточно прочитать значение автоинкрементного поля в текущей записи нужной рабочей области.

Единственное, на что тебе надо обратить внимание в приведенном коде, это то, что команда INSERT-SQL сама открывает таблицу, если она до этого не была открыта. При этом алиас формируется автоматически.

Т.е. надо будет следить за тем, какой же реально алиас имеет та рабочая область, куда идет вставка. По-умолчанию, он совпадает с именем таблицы. Но, в общем случае, это может быть и не так.

Ну, можешь еще почитать про функцию GETAUTOINCVALUE(). Но она введена только в версии VFP9
...
Рейтинг: 0 / 0
Использование Autoincrement
    #33517659
Guest-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за подробный ответ. пока информации для меня достаточно,
буду пробовать на реальных вещах.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Использование Autoincrement
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]