Portál AbcLinuxu, 21. května 2024 20:47


Dotaz: SQLITE - insert into s podminkou

3.5.2020 00:47 Jiří Dvořák | skóre: 19
SQLITE - insert into s podminkou
Přečteno: 1054×
Odpovědět | Admin
zdravim potrebuji semolit toto:
vlozit novy zaznam jestlize sloupec "a" neobsahuje hodnotu 1 a sloupec "b" neobsahuje hodnotu 2 na stejnem radku,
to co se nabizi: insert into table(a,b) values(1,2) where.... samozrejme nefunguje...
sqlite IF... nema...

jediny na co jsem prisel je:

insert into table(a,b) values(
case
when not exists(select * from LinkUp where a='1' and b='2')
then 1
else null
end,
case
when not exists(select * from LinkUp where a='1' and b='2')
then 2
else null
end
)


jenomze v realu ma tabuka vice sloupcu a tohle mi pripada desny....

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

3.5.2020 02:01 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: SQLITE - insert into s podminkou
Odpovědět | | Sbalit | Link | Blokovat | Admin
K čemu má sloužit tato hrůza? Není lepší standardní UNIQUE?
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
3.5.2020 10:16 Jiří Dvořák | skóre: 19
Rozbalit Rozbalit vše Re: SQLITE - insert into s podminkou
to bohužel nejde poněvadž jedinečnost toho záznamu je dána kombinací hodnot v dvou sloupcích ( v reálu ve třech...)...
Řešení 3× (Ilfirin, Filip Jirsák, _ijkl)
3.5.2020 10:22 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: SQLITE - insert into s podminkou
CREATE UNIQUE INDEX index_name 
    ON table_name(column1, column2, column3);
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Řešení 1× (Jiří Dvořák (tazatel))
7.5.2020 21:20 zdenek2008 | skóre: 26
Rozbalit Rozbalit vše Re: SQLITE - insert into s podminkou
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nepomohlo by toto?

https://timmurphy.org/2013/10/23/conditional-insert-in-sql/
9.5.2020 08:12 Jiří Dvořák | skóre: 19
Rozbalit Rozbalit vše Re: SQLITE - insert into s podminkou
ja sem to nakobec ne moc elegantne obesel dvouma dotazama... nejdriv select count(*) where .... a pak vyhodnoceni ve vrstve nad tim a pripadne vlozeni novyho zaznamu... je to asi holt pomalejsi..
9.5.2020 08:42 Jiří Dvořák | skóre: 19
Rozbalit Rozbalit vše Re: SQLITE - insert into s podminkou
ale asi to predelam... toto funguje...
9.5.2020 09:59 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: SQLITE - insert into s podminkou
K čemu je dobré vymýšlet takovéhle nestandardní nesmysly, když na to má databáze standardní konstrukci – omezení na unikátnost založené na indexu?
9.5.2020 10:06 Peter Golis | skóre: 64 | blog: Bežné záležitosti | Bratislava
Rozbalit Rozbalit vše Re: SQLITE - insert into s podminkou
+1

I keď by som skôr použil unique constraint ako unique index.
20.5.2020 02:13 kvr
Rozbalit Rozbalit vše Re: SQLITE - insert into s podminkou
Odpovědět | | Sbalit | Link | Blokovat | Admin
insert into LinkUp (a, b) select 1, 2 from dual where not exists (select 0 from LinkUp where a = 1 and b = 2)

Nejsem si úplně jistý ACI u některých engines, ale nejspíš by to ve 2020 fungovat mělo.

Otázka je, jaký je původní problém a zda by nešel vyřešit úplně jinak...
Josef Kufner avatar 20.5.2020 10:44 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: SQLITE - insert into s podminkou
Mělo by to jít přepsat pomocí INSERT SELECT a případně použít dočasnou tabulku.
Hello world ! Segmentation fault (core dumped)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.