Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
18:23
4239
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Форум для внеигровых тем-->
1|2|3|4

АвторПрограммирование. Помогите изобрести велосипед. Буквы в числа
Ниче не понял. Если пользователь пишет SQL-запрос к таблице, то он всегда может получить ROWID.
Если он работает с гридом, то никто не мешает добавить в этот грид поле rowid (единственное оно будет недоступно для изменения, только для чтения).
И самое главное - зачем вообще этот уникальный код пользователю? Если у тебя какая-то логика, то и используй в ней уникальный код строки. зачем его пользователю светить?
А сам он автоматически назначается каждой строке.
Кто? ROWID? Это порядковый номер в результирующей таблице выборки. Ты с инкрементным уникальным полем не путаешь?
ROWID
Нет, это я его с row_number путаю...
При удалении соответствие будет меняться.
ROWID по сути это указатель на физическое расположение (подробнее можно посмотреть в документации конкретной СУБД).
Если мы удаляем запись, с чего вдруг все остальные ROWID поменяются??? Они будут неизменны. Добавляем запись - назначается новый ROWID.
Теоретически на удаленное место может быть записана новая строка и rowid станет одинаковым (у удаленной записи и у новой), но в текущий момент времени ВСЕ записи в таблице уникальны.

Коды могут поменяться только при импорте\репликации. НО, все равно уникальность никогда не будет нарушена. Если это число должно обладать историческй уникальностью - используй sequence
для MrSlayer:
Да я понял, не о том подумал, почему-то.
Кстати, он не обломается выйти за указанные пределы, при активной "жизни" таблицы.
okay, если пошли по этому пути, то подскажите чем взять строки из sql и засунуть их в .csv файл?
Я не хочу вручную брать N строк, M столбцов и каждый день делать с ними L операций, это должно происходить автоматически по запросу
Обычно справлялся со всеми своими нуждами средствами макросов Excel, теперь нужно что-то новое...
Access справится с описанными запросами (брать N строк, M столбцов и каждый день делать с ними L операций, создать .xls или .csv файл) или нужно что-то другое?
чем взять строки из sql и засунуть их в .csv файл?
Я обычно делаю простенький сервис. Подойдёт любой язык программирования, не вижу ни одной проблемы.
Подойдёт любой язык программирования
Turbo Pascal?
FireSwarm
Если ты имеешь ввиду представления (view), то в них этот псевдостолбец вроде нельзя использовать. Если очень хочется можно создать отельное поле и выполнить слияние rowid из всех физических таблиц :)
про указанные пределы честно говоря не понял... Физическим размещением и управлением памяти занимается СУБД. Если не хватит места для записи, то пользователь получит об этом сообщение.
для erros:
Turbo Pascal?
А почему нет? Он может сделать выборку из базы и сохранить файл. Собирай соответствующий есзешник и создавай службу, запускающую его в нужный момент.
для MrSlayer:
Если ты имеешь ввиду представления (view), то в них этот псевдостолбец вроде нельзя использовать.
ХЗ, мне как-то не приходилось его использовать, тут не знаю.

про указанные пределы честно говоря не понял...
Число может быть от 0 до 4294967295
rowid может быть больше 4294967295. Хотя, тут нужно по базе смотреть, сколько там данных.
Он может сделать выборку из базы и сохранить файл
Не припомню команду экспорта с сервера ABC под пользователем A и паролем Таблисы ВCD в группу переменных :(
erros
эмм, любое извлечение данных из БД - select. Просто укажи одним из полей rowid и все... Если ты работаешь через какой-то встроенный интерфейс, а не через консоль, то там наверняка можно также указать дополнительный столбец. Как это сделать - гугли для своей СУБД.
В access не знаю, тк с ним я не сталкивался. Наверное, должен.
для erros:
Не припомню команду экспорта с сервера ABC под пользователем A и паролем Таблисы ВCD в группу переменных :(
Значит погугли. Я с ним не работал, но коллеги говорят, что есть соответствующие библиотеки.
FireSwarm
10 байт, по крайней мере в оракле. Это адрес ячейки памяти по сути, выхода за пределы быть не может. По умолчанию rowid выводится в символьном виде, но никто не мешает перевести его в десятичный.
Полные ограничения на использование кстати можно посмотреть здесь (опять таки в оракле и именно той версии по которой книжка) (стр 668)
http://books.google.ru/books?id=Et7gxt733S0C&printsec=frontcover&hl=ru#v=onepage&q&f=false
для MrSlayer:
Кстати.
http://www.sql.ru/forum/272284/rowid-v-ms-sql-server-2000
Вот тут утверждают, что у мс скл сервера этого вообще нет. И я, если честно, ни разу с этой штукой не сталкивался. Так что не везде это есть.
FireSwarm
Естественно, все СУБД разные (даже реляционные). Видимо разработчики посчитали, что там оно не нужно. В этой же теме написано, что у MSSQL 2005 эта фича таки есть. В db2 кстати тоже есть.

Кстати, меня что-то переклинило :) Вместо rowid можно реально изменить табличку и добавить какой-нибудь первичный числовой ключ (а может быть он уже там есть).
Вот тут утверждают, что у мс скл сервера этого вообще нет.
В MSSQL этой оракловой байды действительно нет.
Там как-то народу PK с Identity хватает, вот только для этой задачи сабж не подойдет, т.к. после удаления строки и добавления новой строки с тем же (удаленным) словом, оно получит НОВОЕ числовое значение PK, а это противоречит условиям.

Так что ИМХО все-таки задача сводится к алгоритму построения компактного шифра.

Кстати, вопрос к ТС:
а точно 75 символов? Если мы работаем не в режиме case insensitive, то для каждого алфавита число символов умножаем на 2.
Там как-то народу PK с Identity хватает, вот только для этой задачи сабж не подойдет, т.к. после удаления строки и добавления новой строки с тем же (удаленным) словом, оно получит НОВОЕ числовое значение PK, а это противоречит условиям.
Ну в этом случае и rowid новое значение добавит.

Видимо разработчики посчитали, что там оно не нужно.
Инкрементного уникального поля всю жизнь хватало. Так что тут я с ними согласен.

Кстати, меня что-то переклинило :) Вместо rowid можно реально изменить табличку и добавить какой-нибудь первичный числовой ключ (а может быть он уже там есть).
Ну да, полностью поддерживаю. Как я и писал в 11-м посту, это самый простой и очевидный способ.
1|2|3|4
К списку тем
2007-2025, онлайн игры HeroesWM