powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / GUIDs AS Primary key
13 сообщений из 13, страница 1 из 1
GUIDs AS Primary key
    #36604024
й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
День добрый.

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

Вопрос: можно ли заставить генерить SQLite с помощью CoCreateGuid при вставке новой записи(примерно так оно делает при создании колонки с временными данными).
...
Рейтинг: 0 / 0
GUIDs AS Primary key
    #36604057
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
йХочется иметь возможность использовать гуиды в качестве первичного ключа. Хранить их можно как блобы, сравнивать используя Collations.a) Тексты всегда хранятся как блобы.
б) И зачем тут Collations?

йВопрос: можно ли заставить генерить SQLite с помощью CoCreateGuid при вставке новой записи(примерно так оно делает при создании колонки с временными данными).в)Да, можно.
г) Нет, оно так не делает, между GUID и INT есть некоторая разница.
...
Рейтинг: 0 / 0
GUIDs AS Primary key
    #36604076
й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>б) И зачем тут Collations?
Чтобы нормально поддерживать сравнения с гуидом в бинарном виде и гуидом в красивом строковом виде "{A...A-A..A-...}"

>в)Да, можно.
Как?
...
Рейтинг: 0 / 0
GUIDs AS Primary key
    #36604124
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
й>б) И зачем тут Collations?
Чтобы нормально поддерживать сравнения с гуидом в бинарном виде и гуидом в красивом строковом виде "{A...A-A..A-...}"И при чем тут сollations? Слово красивое?

й>в)Да, можно.
Как?Пишешь свою функцию а потом регестрируешь ее в движке через sqlite3_create_function()
...
Рейтинг: 0 / 0
GUIDs AS Primary key
    #36604735
й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,
>И при чем тут сollations? Слово красивое?
Мне казалось, что это:

CREATE TABLE t1(
x INTEGER PRIMARY KEY,
a, /* collating sequence BINARY */
b COLLATE BINARY, /* collating sequence BINARY */
c COLLATE RTRIM, /* collating sequence RTRIM */
d COLLATE NOCASE /* collating sequence NOCASE */
);
http://sqlite.org/datatype3.html

именно так называется.

>Пишешь свою функцию а потом регестрируешь ее в движке через sqlite3_create_function()
И как эту функцию "прикрепить" к событию создания новой строки в БД? Триггеры?
...
Рейтинг: 0 / 0
GUIDs AS Primary key
    #36605212
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
й...с помощью CoCreateGuid ...

Не удержался - что за мания пользоваться непотребными интерфейсами? Непотребными = непереносимыми. Создать уникальный идентификатор можно и средствами эскулайт.
Хранить блобами, преобразуя в hex при выводе - и вовсе ни к чему сравнивать текстовое и бинарное представления (это к слову о понравившемся вам названии "collation").
...
Рейтинг: 0 / 0
GUIDs AS Primary key
    #36605474
й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBG,

>Не удержался - что за мания пользоваться непотребными интерфейсами? Непотребными = непереносимыми. Создать уникальный идентификатор можно и средствами эскулайт.
Как создавать средствами SQL-лайт гуиды?

>и вовсе ни к чему сравнивать текстовое и бинарное представления (это к слову о понравившемся вам названии "collation").
Ничего, что другие БД такое умеют и клиенты ожидают, что и на данной БД будет тот же эффект?
...
Рейтинг: 0 / 0
GUIDs AS Primary key
    #36605846
itkkf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
йMBG,

>Не удержался - что за мания пользоваться непотребными интерфейсами? Непотребными = непереносимыми. Создать уникальный идентификатор можно и средствами эскулайт.
Как создавать средствами SQL-лайт гуиды?

http://sqlite.org/lang_corefunc.html

йMBG,
>и вовсе ни к чему сравнивать текстовое и бинарное представления (это к слову о понравившемся вам названии "collation").
Ничего, что другие БД такое умеют и клиенты ожидают, что и на данной БД будет тот же эффект?

Если у вас _клиенты_ пишут запросы, то вы-то что делаете? Я думал, вы разрабатываете интерфейс для БД, но, оказывается, пользователи работают с базой напрямую, из sqlite шелла, видимо. А насчет "другие умеют" - может, вы и гигабайтные блобы сравниваете "в лоб", подумаешь, что работать невозможно из-за "тормозов", ведь умеет же...
...
Рейтинг: 0 / 0
GUIDs AS Primary key
    #36605881
й
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Если у вас _клиенты_ пишут запросы, то вы-то что делаете?
Клиенты - это другие приложения. Я реализую прокси между SQLitе и клиентами.

>А насчет "другие умеют" - может, вы и гигабайтные блобы сравниваете "в лоб", подумаешь, что работать невозможно из-за "тормозов", ведь умеет же...
Пальцы решил погнуть? Без проблем. Готов проверить около <b>сотни</b> клиентов на использование таких сравнений?!
...
Рейтинг: 0 / 0
GUIDs AS Primary key
    #36605897
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
йWhite Owl,
>И при чем тут сollations? Слово красивое?
Мне казалось, что это:

CREATE TABLE t1(
x INTEGER PRIMARY KEY,
a, /* collating sequence BINARY */
b COLLATE BINARY, /* collating sequence BINARY */
c COLLATE RTRIM, /* collating sequence RTRIM */
d COLLATE NOCASE /* collating sequence NOCASE */
);
http://sqlite.org/datatype3.html

именно так называется.В огороде бузина а в Киеве дядька.
Collation это всего-лишь порядок сортировки. Пользователю при написании запросов от наличия заявленного правила сортировки ни жарко ни холодно.

йИ как эту функцию "прикрепить" к событию создания новой строки в БД? Триггеры?Триггер или default
...
Рейтинг: 0 / 0
GUIDs AS Primary key
    #36606335
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
White OwlВ огороде бузина а в Киеве дядька.
Collation это всего-лишь порядок сортировки. Пользователю при написании запросов от наличия заявленного правила сортировки ни жарко ни холодно.

Не порядок сортировки, а правило сравнения. Можно сделать кастомный коллэйшен такой, что блоб и его хекс-представление будут считаться равными. Но смысла в этом - ни на грош, т.к. СУБД по своей сути оперируют именно структурированной информацией, а хранить вперемешку блобы и строки не есть хорошо по многим причинам.

P.S. В известном руководстве по эскулайт приведен пример коллэйшена для сравнения строковых дат в формате оракла. Но я ни разу не видел, чтобы это использовали в реальном приложении :-)
...
Рейтинг: 0 / 0
GUIDs AS Primary key
    #36606367
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MBGWhite OwlВ огороде бузина а в Киеве дядька.
Collation это всего-лишь порядок сортировки. Пользователю при написании запросов от наличия заявленного правила сортировки ни жарко ни холодно.Не порядок сортировки, а правило сравнения.вот как раз слова "правило сравнения" и убедило нашего "й" что это collation что-то такое чем можно сравнивать.
"Правило сравнения используещеся для сортировки" такая формулировка устроит?
...
Рейтинг: 0 / 0
GUIDs AS Primary key
    #36606397
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
White Owlвот как раз слова "правило сравнения" и убедило нашего "й" что это collation что-то такое чем можно сравнивать.
"Правило сравнения используещеся для сортировки" такая формулировка устроит?

Если топикстартер поймет, что сравнивать блобы можно без создания собственного коллэйшена, то вполне :-)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / GUIDs AS Primary key
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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