Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
28.04.2010, 19:41
|
|||
---|---|---|---|
GUIDs AS Primary key |
|||
#18+
День добрый. Хочется иметь возможность использовать гуиды в качестве первичного ключа. Хранить их можно как блобы, сравнивать используя Collations. Вопрос: можно ли заставить генерить SQLite с помощью CoCreateGuid при вставке новой записи(примерно так оно делает при создании колонки с временными данными). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.04.2010, 20:05
|
|||
---|---|---|---|
GUIDs AS Primary key |
|||
#18+
йХочется иметь возможность использовать гуиды в качестве первичного ключа. Хранить их можно как блобы, сравнивать используя Collations.a) Тексты всегда хранятся как блобы. б) И зачем тут Collations? йВопрос: можно ли заставить генерить SQLite с помощью CoCreateGuid при вставке новой записи(примерно так оно делает при создании колонки с временными данными).в)Да, можно. г) Нет, оно так не делает, между GUID и INT есть некоторая разница. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.04.2010, 20:18
|
|||
---|---|---|---|
GUIDs AS Primary key |
|||
#18+
>б) И зачем тут Collations? Чтобы нормально поддерживать сравнения с гуидом в бинарном виде и гуидом в красивом строковом виде "{A...A-A..A-...}" >в)Да, можно. Как? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
28.04.2010, 20:50
|
|||
---|---|---|---|
GUIDs AS Primary key |
|||
#18+
й>б) И зачем тут Collations? Чтобы нормально поддерживать сравнения с гуидом в бинарном виде и гуидом в красивом строковом виде "{A...A-A..A-...}"И при чем тут сollations? Слово красивое? й>в)Да, можно. Как?Пишешь свою функцию а потом регестрируешь ее в движке через sqlite3_create_function() ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2010, 11:22
|
|||
---|---|---|---|
GUIDs AS Primary key |
|||
#18+
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() И как эту функцию "прикрепить" к событию создания новой строки в БД? Триггеры? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2010, 13:55
|
|||
---|---|---|---|
|
|||
GUIDs AS Primary key |
|||
#18+
й...с помощью CoCreateGuid ... Не удержался - что за мания пользоваться непотребными интерфейсами? Непотребными = непереносимыми. Создать уникальный идентификатор можно и средствами эскулайт. Хранить блобами, преобразуя в hex при выводе - и вовсе ни к чему сравнивать текстовое и бинарное представления (это к слову о понравившемся вам названии "collation"). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2010, 15:23
|
|||
---|---|---|---|
GUIDs AS Primary key |
|||
#18+
MBG, >Не удержался - что за мания пользоваться непотребными интерфейсами? Непотребными = непереносимыми. Создать уникальный идентификатор можно и средствами эскулайт. Как создавать средствами SQL-лайт гуиды? >и вовсе ни к чему сравнивать текстовое и бинарное представления (это к слову о понравившемся вам названии "collation"). Ничего, что другие БД такое умеют и клиенты ожидают, что и на данной БД будет тот же эффект? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2010, 17:37
|
|||
---|---|---|---|
|
|||
GUIDs AS Primary key |
|||
#18+
йMBG, >Не удержался - что за мания пользоваться непотребными интерфейсами? Непотребными = непереносимыми. Создать уникальный идентификатор можно и средствами эскулайт. Как создавать средствами SQL-лайт гуиды? http://sqlite.org/lang_corefunc.html йMBG, >и вовсе ни к чему сравнивать текстовое и бинарное представления (это к слову о понравившемся вам названии "collation"). Ничего, что другие БД такое умеют и клиенты ожидают, что и на данной БД будет тот же эффект? Если у вас _клиенты_ пишут запросы, то вы-то что делаете? Я думал, вы разрабатываете интерфейс для БД, но, оказывается, пользователи работают с базой напрямую, из sqlite шелла, видимо. А насчет "другие умеют" - может, вы и гигабайтные блобы сравниваете "в лоб", подумаешь, что работать невозможно из-за "тормозов", ведь умеет же... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2010, 17:46
|
|||
---|---|---|---|
GUIDs AS Primary key |
|||
#18+
>Если у вас _клиенты_ пишут запросы, то вы-то что делаете? Клиенты - это другие приложения. Я реализую прокси между SQLitе и клиентами. >А насчет "другие умеют" - может, вы и гигабайтные блобы сравниваете "в лоб", подумаешь, что работать невозможно из-за "тормозов", ведь умеет же... Пальцы решил погнуть? Без проблем. Готов проверить около <b>сотни</b> клиентов на использование таких сравнений?! ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2010, 17:50
|
|||
---|---|---|---|
GUIDs AS Primary key |
|||
#18+
й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 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2010, 23:06
|
|||
---|---|---|---|
|
|||
GUIDs AS Primary key |
|||
#18+
White OwlВ огороде бузина а в Киеве дядька. Collation это всего-лишь порядок сортировки. Пользователю при написании запросов от наличия заявленного правила сортировки ни жарко ни холодно. Не порядок сортировки, а правило сравнения. Можно сделать кастомный коллэйшен такой, что блоб и его хекс-представление будут считаться равными. Но смысла в этом - ни на грош, т.к. СУБД по своей сути оперируют именно структурированной информацией, а хранить вперемешку блобы и строки не есть хорошо по многим причинам. P.S. В известном руководстве по эскулайт приведен пример коллэйшена для сравнения строковых дат в формате оракла. Но я ни разу не видел, чтобы это использовали в реальном приложении :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
29.04.2010, 23:50
|
|||
---|---|---|---|
GUIDs AS Primary key |
|||
#18+
MBGWhite OwlВ огороде бузина а в Киеве дядька. Collation это всего-лишь порядок сортировки. Пользователю при написании запросов от наличия заявленного правила сортировки ни жарко ни холодно.Не порядок сортировки, а правило сравнения.вот как раз слова "правило сравнения" и убедило нашего "й" что это collation что-то такое чем можно сравнивать. "Правило сравнения используещеся для сортировки" такая формулировка устроит? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
30.04.2010, 00:19
|
|||
---|---|---|---|
|
|||
GUIDs AS Primary key |
|||
#18+
White Owlвот как раз слова "правило сравнения" и убедило нашего "й" что это collation что-то такое чем можно сравнивать. "Правило сравнения используещеся для сортировки" такая формулировка устроит? Если топикстартер поймет, что сравнивать блобы можно без создания собственного коллэйшена, то вполне :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=54&tablet=1&tid=2009344]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 317ms |
total: | 473ms |
0 / 0 |