1.2, Аноним (2), 13:20, 19/06/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>> Обеспечена генерация ошибки при попытках доступа к идентификатору строки (rowid) в представлении (VIEW) или подзапросе. Для возвращения возможности доступа к rowid для представлений предусмотрена сборочная опцмия "-DSQLITE_ALLOW_ROWID_IN_VIEW"
А почему?
| |
|
2.8, x3who (?), 15:04, 19/06/2021 [^] [^^] [^^^] [ответить]
| +5 +/– |
Перевод не очень удачный. У вьюх и поздапросов не может быть своих ROWIDов, поэтому обращаться к ним - плохая примета. Но, поскольку у корпорастов принято всё делать в трансанальном стиле, то для них оставили лазейку с опцией SQLITE_ALLOW_ROWID_IN_VIEW при включении которой они будут получать значение -1 (кажется).
| |
|
3.14, Аноним (-), 17:32, 19/06/2021 [^] [^^] [^^^] [ответить]
| +2 +/– |
ну в корпорастных как ты изволил выразиться базах вполне себе можно писать во вьюхи, что тут такого плохого. Если отношение не биективно, но тебе просто не даст писать
| |
3.19, Михрютка (ok), 22:19, 19/06/2021 [^] [^^] [^^^] [ответить]
| +/– |
>>> У вьюх и поздапросов не может быть своих ROWIDов
товарищ, у вас гибернатор разморозился.
1) нет причин, по которым single table view не может иметь rowid
2) rtfm://"updatable join view"
| |
|
4.23, x3who (?), 01:41, 20/06/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
> 1) нет причин, по которым single table view не может иметь rowid
Нет, запись в таблице может иметь rowid, и такое вполне себе работает в сабжевой версии:
create table test(i integer primary key, s text);
create view vtest as select rowid as 'rowid', i, s from test;
> 2) rtfm://"updatable join view"
The 'O' in "SQLite" stands for "Oracle". Вы, товарищ, многого ждёте от встраиваемой БД.
В SQLite вьюхи тупо не апдейтятся [1]. Но можно повесить триггер, который будет делать инсерт или апдейт соответствующей или вообще другой таблицы. Только вью не узнает что там в результате изменилось. Например продолжим издеваться над vtest созданным выше:
create trigger TTestInsert instead of insert on vtest begin insert into test values (new.i, 'LOL!'); end;
create trigger TTestUpdate instead of update on vtest begin update test set i=new.i, s='BWOGHAGHA' where i=old.i and s=old.s; end;
insert into vtest(s) values('x') returning *;
<null> | <null> | x
select * from vtest;
22 |22 | LOL!
update vtest set s='y' returning *;
<null> | 22 | y
select * from vtest;
22 | 22 | BWOGHAGHA
Вот как-то примерно так.
Список литературы:
[1] https://sqlite.org/omitted.html
| |
|
5.24, x3who (?), 02:15, 20/06/2021 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ну и до кучи проверил в постгресе пункт (1)
Если явно не включать в текст запроса во вьюхе oid - то и в Pg заселектить его из вьюхи не получится, ровно как в SQLite:
create table test(i serial primary key, s text) with oids;
create view vtest as select * from test;
insert into vtest(s) values ('a') returning *; -- works
insert into vtest(s) values ('b') returning oid,*; -- failing
insert into test(s) values ('c') returning oid,*; -- works
select oid, ctid, i, s from test; -- works
select oid, i, s from vtest; -- failing
В Оракле проверять лень..
| |
|
|
|
|
|
|
|
4.21, Туши пукан (?), 22:24, 19/06/2021 [^] [^^] [^^^] [ответить]
| –2 +/– |
Rust его и многих других впопеннетчиц в детстве гнобил 🤣 Детские-с травмы, сэр!
| |
|
3.35, пох. (?), 12:54, 24/06/2021 [^] [^^] [^^^] [ответить]
| +/– |
Чувак, они tcl используют, настолько немодные. Хруст им не грозит еще лет сорок.
| |
|
|
1.18, Lex (??), 19:06, 19/06/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +3 +/– |
Все-таки, неплохая БД.
На днях ее как раз поминал, когда потребовалось вытащить часть файлов из бэкапа яблочно устройства.. а там они - в каталогах с именами с 00 по ff, вместо имен файлов - хеши и без каких-либо расширений. Притом, все вперемешку от фоток и заметок и до смс'ок, контактов, закладок и приложений. Сопоставления между именами в резервной копии, реальным именем, адресом и к чему относится - в многомегабайтной БД.
Слава б.-гу, что, если где и попадаются встраиваемые бд, то это скорее всего "оно" и его запросто можно расковырять весьма обширным инструментарием, а то и скрипты какие-нибудь набросать по быстрому.
| |
|
2.31, Егор (??), 22:37, 20/06/2021 [^] [^^] [^^^] [ответить]
| +/– |
Удобвством интеграции в проект. Никаких пакетов и зависимостей. Один файл с исходным кодом на C и заголовочный, и sqlite используется в программе.
| |
|
1.28, kai3341 (ok), 17:40, 20/06/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Я снова упёрся рогом в отсутствие явных секвенсов =/
На запрос в гугле 'sqlite sequence' всплывает статья на сайте разработчика SQLite, где автор др*чит на автоинкременты.
Причём печаль в том, что автоинкремент фактически реализует функционал секвенса. В SQLite есть всё, чтобы реализовать явные секвенсы. Но их нет.
| |
|
2.32, Егор (??), 22:44, 20/06/2021 [^] [^^] [^^^] [ответить]
| +/– |
Ты странный. sqlite не предназначен для параллельной модификации данных. Поэтому и генераторы уникальных последовательностей не нужны.
| |
|
3.37, kai3341 (ok), 22:34, 04/07/2021 [^] [^^] [^^^] [ответить]
| +/– |
> Ты странный. sqlite не предназначен для параллельной модификации данных. Поэтому и генераторы
> уникальных последовательностей не нужны.
сгенерируйте мне уникальную последовательность для НЕ первичного ключа? Например, для связи many-to-many?
| |
|
|
1.30, iZEN (ok), 19:23, 20/06/2021 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Embarcadero сделала InterBase 2020, в том числе для Android. Зачем что-то ещё?
| |
|