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

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

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

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
01.02.2006, 20:06
    #33517455
Guest-
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование Autoincrement
В предыдущем примере должно быть

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
01.02.2006, 20:15
    #33517475
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Использование Autoincrement
Да там же. Непосредственно в таблице Parent.

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

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

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

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

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


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