| 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. Зачем что-то ещё?
  |  |   |   
 
 |