![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли узнать номер физической записи...
Piter © (2004-08-05 17:17:00)в SQL базах?
Например, можно это сделать в Firebird, MSSQL?
Piter (2004-08-05 19:45:00) [21]s999 (05.08.04 18:46) [11]
Ты бы объяснил, что у тебя за задача
просто узнать...
}|{yk (2004-08-05 19:25:00) [22]Ну в Oracle можно использовать rowid, но они нестабильны могут быть
Anatoly Podgoretsky (2004-08-05 19:21:00) [23]Попытка говорить (использовать) какие то физические номера записей говорит о серьезных проблемах с дихайном базе и серьезных провалаъ в обраховании, в теории реляционныхибаз данных. Все действия над такими базами должны делаться реляционными методами.
VID (2004-08-05 19:08:00) [24]VID © (05.08.04 19:06) [12]
забыл добавить, что само поле "ID" делают первичным ключем.
VID (2004-08-05 19:06:00) [25]Piter, обычно для получения уникального номера записи, создают поле "ID", куда при каждом добавлении новой записи, записывается значение генератора, который перед этим инкрементируется на 1. Это уникальное число и будет "удостоверением личности" записи в течении всей её жизни. Ни о каких RecordNumber в потомках TDataSet и думать не следут, если необходимо уникально идентифицировать запись.
s999 (2004-08-05 18:46:00) [26]Ты бы объяснил, что у тебя за задача, зачем тебе это нужно, может чего посоветовали бы.
Johnmen имеет в виду dbkey. Он стабилен в рамках только одной транзакции, размер его зависит от числа таблиц в запросе, а работа с ним весьма нетривиальна. Поэтому лучше объясни.
Piter (2004-08-05 18:34:00) [27]Johnmen © (05.08.04 17:50) [8]
Нет. Он совсем другое...:)
ну а как? Это число или что? Как оно выбирается. какой диапазон имеет?
sniknik (2004-08-05 18:05:00) [28]> Вот и все!
не все, допустим ты сделал удаление в первых записях, что получится при следующем запросе? это разве правильная идентификация?
не говоря уже о том что порядок можно получить и просто ничего не делая (самому), а админ к примеру компакт базе сделал, добавил/сменил кластерный индекс, или MSSQL план поменял, и все, придет запрос в другой последовательности.
> Но можно и без Query... С помощью TAdoTable.
а запусти профайлер и посмотри что при открытии TAdoTable произойдет.
Johnmen (2004-08-05 17:50:00) [29]>Piter © (05.08.04 17:34) [6]
Нет. Он совсем другое...:)
46_55_41_44 (2004-08-05 17:42:00) [30]
> 46_55_41_44 © (05.08.04 17:19) [2]
> это будет номер в рекордсете. никакой информации по идентификации
> записи от запроса к запросу не несет.
Select * From Table1
Вот и все!
и RecNo будет нормально работать...
Но можно и без Query... С помощью TAdoTable.
Piter (2004-08-05 17:34:00) [31]Johnmen © (05.08.04 17:25) [4]
В IB/FB/YA можно узнать идентификатор "физической записи"...
а он в общем тоже самое, что и номер записи, да? То есть, начинается с 1 (или там с 0) и продолжается далее. Или нет?
А как с этим дело обстоит в MSSQL?
Rule (2004-08-05 17:29:00) [32]Piter © (05.08.04 17:17)
Можно вставить рендом (как советовал АП) эфект будет тот же
Johnmen (2004-08-05 17:25:00) [33]В IB/FB/YA можно узнать идентификатор "физической записи"...
А понятия "номер" не существует. Везде.
sniknik (2004-08-05 17:22:00) [34]46_55_41_44 © (05.08.04 17:19) [2]
это будет номер в рекордсете. никакой информации по идентификации записи от запроса к запросу не несет.
46_55_41_44 (2004-08-05 17:19:00) [35]AdoTable.RecNo
или
AdoQuery.RecNo
Sandman25 (2004-08-05 17:18:00) [36]Зачем?