Kontrola na existujuci zaznam pri vlozeni – MS SQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Kontrola na existujuci zaznam pri vlozeni – MS SQL – Fórum – Programujte.comKontrola na existujuci zaznam pri vlozeni – MS SQL – Fórum – Programujte.com

 

sql
~ Anonymní uživatel
3 příspěvky
13. 12. 2012   #1
-
0
-

Ahojte,

rad by som nahadzal do DB par zaznamov. V DB je niekolko tabuliek. Mam tabulku A a B. Jeden zaznam z tabulky A moze obcashovat viac zaznamov z tabulky B. Vkladat sa to teda bude tak, ze vlozim jeden zaznam do tabulky A a odpovedajuce zaznamy do tabulky B. Chcem ale nejak vyriesit, ako zabranit tomu,ze ak poslem do tabulky A zaznam ktory tam uz existuje, neulozi sa, ale vrati sa mi jeho ID pomocou ktoreho mozem potom ulozit prislusne zaznamy do tabulky B. Resp, ci je taketo riesenie v poriadku, alebo sa da toto docielit aj nejak inak. 

Nahlásit jako SPAM
IP: 212.89.227.–
liborb
~ Redaktor
+18
Guru
13. 12. 2012   #2
-
0
-

V MSSQL si můžeš mimo jiné vytvořit Stored Procedures, která může obsahovat to, co požaduješ, tj. SELECT dotaz na existenci dat a pokud existují, tak vrátit takto získané ID a když záznam neexistuje, tak ho vložit a vrátit nové ID.

Nahlásit jako SPAM
IP: 188.75.135.–
sql
~ Anonymní uživatel
3 příspěvky
13. 12. 2012   #3
-
0
-

Jasne, cez SP som to chcel riesit aj povodne. Takze taketo riesenie je v pohode ? Zdalo sa mi to trochu tazkopadne a tiez som niekde pocul, ze "IF NOT EXISTS" nie je vzdy stastne pouzivat kvoli vykonu.

Nahlásit jako SPAM
IP: 212.89.227.–
liborb
~ Redaktor
+18
Guru
13. 12. 2012   #4
-
0
-

No ale ty chceš ID toho existující záznamu a ten jinak než přes SELECT stejně nezískáš. A otázka výkonu ... kolik tisíc záznamů za vteřinu budeš chtít ukládat? :)

Nahlásit jako SPAM
IP: 188.75.135.–
sql
~ Anonymní uživatel
3 příspěvky
13. 12. 2012   #5
-
0
-

No mna tiez nic lepsie nenapadlo a tych zaznamov zase tak vela nebude. Ok, vdaka, uz mlcim :) 

Nahlásit jako SPAM
IP: 212.89.227.–
RomanZ
~ Anonymní uživatel
272 příspěvků
13. 12. 2012   #6
-
+1
-
Zajímavé

> liborb "SELECT dotaz na existenci dat a pokud existují, tak vrátit takto získané ID a když záznam neexistuje, tak ho vložit a vrátit nové ID"

To není úplně dobře, resp. bude to spolehlivě fungovat, jen když k databázi nebude přistupovat víc uživatelů současně. Jde o to, že mezi dotazem, zda záznam existuje, a jeho vložením může jiný uživatel stihnout záznam vložit.

 Jako spolehlivé řešení se mi osvědčilo napsat insert s podmínkou (tak, aby se záznam vkládal, pokud neexistuje) a teprve potom se pídit po ID záznamu. Zkrátka jde o to, aby podmínka byla součástí insertovacího příkazu.

Nahlásit jako SPAM
IP: 90.176.60.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 5 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý