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