Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Odczyt Indeksu nowego wiersza z tabeli

0 views
Skip to first unread message

Jędrek

unread,
Jul 2, 2008, 3:20:02 AM7/2/08
to
Witam
Muszę wczytać do bazy plik w formacie CSV - to nie jest jeszcze problem.
W pliku CSV są zapisane dane, które trzeba zaimportować do kilku tabel - to
w zasadzie też nie kłopot.

Kłopot się zaczyna gdzie indziej - wpisywane wiersze pomiędzy tabelami mają
być powiązane wzajemnie kluczami z tabel między sobą (hierarchia
drzewiasta ).
Aby nie śmiecić bazy chciałem to zrobić w transakcji tnz.: jak wczytam cały
plik to kończę transakcję, jeśli wystąpi błąd danych to wycofuję całą
operację. Pliki nie są wielkie, więc zasobów dużo nie trzeba.
Próbowałem to zrobić tak:
1. zaczynam transakcję
2. dopisuję wiersz danych do TAB_1
3. pobieram ID dopisanego wiersza ID_TAB_1
4. dopisuje wiersz do TAB_2 z informacją o ID_TAB_1
itd. aż do ostatniej tabeli. Tabel jest 5
Po zakończeniu wczytywania kończę transakcję.
Problemem jest operacja 2 - po dopisaniu wiersza nie mogę pobrać ID_TAB_1
jak i kolejnych Identyfikatorów.
Mogę pobrać ID, ale po zakończeniu transakcji, ale nie w jej trakcie :(
Albo coś źle robię, albo czegoś nie wiem:(

Pytanie jest takie - Czy da się pobrać ID dopisane wiersza bez kończenia
transakcji i jak to zrobić?
Testowałem inne rozwiązania, ale są one okupione zdecydowanie większym
czasem potrzebnym na wczytanie takiego samego pliku. Przy jednym pliku bym
sobie darował, ale będzie ich więcej, więc czas wczytania niestety ma
znaczenie.

Pozdrawiam
/Jędrek

P.S. baza pracuje na MS SQL-Express 2005


yamma

unread,
Jul 2, 2008, 3:24:28 AM7/2/08
to
Jędrek wrote:

> 3. pobieram ID dopisanego wiersza ID_TAB_1

W jaki sposób to robisz?
yamma

Jędrek

unread,
Jul 2, 2008, 3:50:35 AM7/2/08
to

Użytkownik "yamma" <ya...@wp.pl> napisał w wiadomości
news:g4fafr$57d$1...@inews.gazeta.pl...
> Jędrek wrote:

Witam
Zapis do bazy wykonuję przy pomocy procedury składowanej w bazie do której
przekazuję dane do zapisu.
Odczyt też przy pomocy procedury (zwykły SELECT z odpowiednim warunkiem)-
może tu jest mój błąd?
Z pewnych względów chciałbym pozostać przy StoredPoredure.
W trakcie zapisywanie podglądałem tabelę, ale wiersz mi się nie wyświetlał
dopuki nie zakończyłem tranzakcji.
Pozdrawiam
/Jędrek

Grzegorz Danowski

unread,
Jul 2, 2008, 3:55:48 AM7/2/08
to
Użytkownik "Jędrek" <andr...@o2.pl> napisał w wiadomości
news:g4fc2r$45b$1...@atlantis.news.neostrada.pl...

> Zapis do bazy wykonuję przy pomocy procedury składowanej w bazie do której
> przekazuję dane do zapisu.
> Odczyt też przy pomocy procedury (zwykły SELECT z odpowiednim warunkiem)-
> może tu jest mój błąd?

Jaki to warunek?

> Z pewnych względów chciałbym pozostać przy StoredPoredure.
> W trakcie zapisywanie podglądałem tabelę, ale wiersz mi się nie wyświetlał
> dopuki nie zakończyłem tranzakcji.

Zmodyfikuj swoją procedurę przekazywaną by zwracała id dodanego rekordu -
wówczas nie będziesz musiał robić osobnego selekta, a id wyciągniesz np.
przez ScopeIdentity.
G.


0 new messages