ďťż
 
Oracle blad naruszono wiezy unikatowe ďťż
 
Oracle blad naruszono wiezy unikatowe
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

Oracle blad naruszono wiezy unikatowe



daxus - 24-12-2006 00:37
Oracle blad naruszono wiezy unikatowe
  Mam prawdopodobnie lamerski problem - jestem cienki z baz danych.

Przeprowadzam testy dla malutkiej bazy danych w Oracle 9.2.0.1 (tabele
mają 5000 wierszy)
Łączę sie z poziomu java.

operacja wykonywana dla celów testowych (wyliczam czas trwania INSERTa):

100 razy wykonaj
{
- oblicz ostatnią (najnowszą) wartość klucza w tabeli- realizuje to
funkcja, ktora przewija wiersze az do ostatniego
- Insert into table .... (wstawiam cos na koniec przy pomocy
uzyskanego wyzej klucza)
}

Wszystko ładnie działa, ale jeżeli test jest wykonywany tylko przez
jednego użytkownika.
Jeżeli uruchamiam dwa razy program testowy na jednym komputerze, aby
zasymulować dostęp jednoczesny dwóch użytkowników, to przy wykonaniu
INSERT wyskakuje ZAWSZE DLA KILKUNASTU Z TYCH 100 operacji, podczas
testu wyjątek :

java.sql.SQLException: ORA-00001: naruszono więzy unikatowe
(SYSTEM.SYS_C003277)

Wyjątek nie zatrzymuje wykonania programu, ale część INSERT-ów nie
wykonuje się.
Dodatkowe informacje :
-Ograniczenia CHECK,UNIQUE są sciagniete dla celow testowych.
-próbowalem ustalać poziom izolacji na najwyzszy :
Connection.TRANSACTION_SERIALIZABLE - nic nie pomoglo

Proszę o pomoc, bo mnie to niestety przerasta
BBBBłłagam





Ronald Kuczek - 24-12-2006 00:37

  daxus napisał(a):
>
> Proszę o pomoc, bo mnie to niestety przerasta

Załóż sequence i z niego pobieraj nową wartość klucza
select nextval nazwa_sekwencera from dual (jakoś tak, dawno nic nie
robiłem na Oracle).
Załatwisz problem i z wydajnością i z więzami integralności.

Pozdrawiam
Rony




Ronald Kuczek - 24-12-2006 00:37

  Dodam jeszcze, że zgrabniej będzie, jak sobie sprawę załatwisz na
triggerze before insert. Nową wartość klucza zawsze możesz w razie
potrzeby pobrać po insert (patrz currval).

Pozdrawiam
Rony




daxus - 24-12-2006 00:37

  Ronald Kuczek napisał(a):
> Dodam jeszcze, że zgrabniej będzie, jak sobie sprawę załatwisz na
> triggerze before insert. Nową wartość klucza zawsze możesz w razie
> potrzeby pobrać po insert (patrz currval).
>
> Pozdrawiam
> Rony

Dzięki wielkie, zaraz spróbuję to zastosować.
Siedze już pare godzin i nic nie moge wymyśleć (brak praktyki z BD
niestety).
To jest naprawde wielka rzecz że po 20 minutach mam podpowiedź - !!!
:):):):)





ThomasO@cpas.com - 24-12-2006 00:37

 
Ronald Kuczek wrote:
> Dodam jeszcze, że zgrabniej będzie, jak sobie sprawę załatwisz na
> triggerze before insert. Nową wartość klucza zawsze możesz w razie
> potrzeby pobrać po insert (patrz currval).
>
> Pozdrawiam
> Rony

Tylko zeby uscislic.
Propozycja Rony to jedyna mozliwosc.
Usywanie SELECT MAX(...) zawsze doprowadzi do bledow.
Zobacz dyskusje i przyklady:
http://asktom.oracle.com/pls/ask/f?p...:1120633842332

>>potrzeby pobrać po insert (patrz currval).<<
Inna opcja zeby znalezdz wartosc przypisana w triggerze to uzycie:
INSERT ... RETURNING ...

HTH
Thomas




ThomasO@cpas.com - 24-12-2006 00:37

 
Ronald Kuczek wrote:
> Dodam jeszcze, że zgrabniej będzie, jak sobie sprawę załatwisz na
> triggerze before insert. Nową wartość klucza zawsze możesz w razie
> potrzeby pobrać po insert (patrz currval).
>
> Pozdrawiam
> Rony

Tylko zeby uscislic.
Propozycja Rony jedyna mozliwosc.
Usywanie SELECT MAX(...) zawsze doprowadzi do bledow.

>>potrzeby pobrać po insert (patrz currval).<<
Inna opcja zeby znalezdz wartosc przypisana w triggerze to uzycie:
INSERT ... RETURNING ...

HTH
Thomas




ThomasO@cpas.com - 24-12-2006 00:37

 
Ronald Kuczek wrote:
> Dodam jeszcze, że zgrabniej będzie, jak sobie sprawę załatwisz na
> triggerze before insert. Nową wartość klucza zawsze możesz w razie
> potrzeby pobrać po insert (patrz currval).
>
> Pozdrawiam
> Rony

Tylko zeby uscislic.
Propozycja Rony to jedyna mozliwosc.
Usywanie SELECT MAX(...) zawsze doprowadzi do bledow.
Zobacz dyskusje i przyklady:
http://asktom.oracle.com/pls/ask/f?p...:1120633842332

>>potrzeby pobrać po insert (patrz currval).<<
Inna opcja zeby znalezdz wartosc przypisana w triggerze to uzycie:
INSERT ... RETURNING ...

HTH
Thomas




ThomasO@cpas.com - 24-12-2006 00:37

 
Thom...@cpas.com wrote:
> Ronald Kuczek wrote:
> > Dodam jeszcze, że zgrabniej będzie, jak sobie sprawę załatwisz na
> > triggerze before insert. Nową wartość klucza zawsze możesz w razie
> > potrzeby pobrać po insert (patrz currval).
> >
> > Pozdrawiam
> > Rony
>
> Tylko zeby uscislic.
> Propozycja Rony to jedyna mozliwosc.
> Usywanie SELECT MAX(...) zawsze doprowadzi do bledow.
> Zobacz dyskusje i przyklady:
> http://asktom.oracle.com/pls/ask/f?p...:1120633842332
>
> >>potrzeby pobrać po insert (patrz currval).<<
> Inna opcja zeby znalezdz wartosc przypisana w triggerze to uzycie:
> INSERT ... RETURNING ...

Przepraszam za wielokrotny post. Moj Google Groups troche zwariowal.
Thomas

>
> HTH
> Thomas
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Oracle, SQL, PL/SQL. Jak =?ISO-8859-2?Q?napisa=E6_zapytanie=2C?==?ISO-8859-2?Q?_kt=F3re_zwr=F3ci_nazw=EA_atrybutu=2C_kt=F3reg o?==?ISO-8859-2?Q?_warto=B6ci_spe=B3niaj=B1_zadany_warunek?= Oracle 19g +Insert +Insert +Insert... [oracle] zapytanie dynamiczne z =?ISO-8859-2?Q?=22dynamiczn=B1_?==?ISO-8859-2?Q?nazw=B1_tabeli=22?= [Oracle] jak =?ISO-8859-2?Q?ograniczy=E6_pami=EA=E6_dla_se?==?ISO-8859-2?Q?rwera=3F?= =?ISO-8859-2?Q?=5BOT=5D_Zdany_egzamin_Oracle_1Z0-007_a?==?ISO-8859-2?Q?_brak_informacji_na_stronie_Prometric_-_czy?==?ISO-8859-2?Q?_co=B6_nie_tak=3F?= [oracle] czy da =?ISO-8859-2?Q?si=EA_z_poziomu_procedury_?==?ISO-8859-2?Q?zrobi=E6_kopi=EA_zapasow=B1=3F?= [oracle 10g] czy =?ISO-8859-2?Q?mo=BFna_wy=B3=B1czy=E6_wszys?==?ISO-8859-2?Q?tkie_wi=EAzy_w_schemacie=3F?= MSSQL Express czy Oracle Express =?iso-8859-2?q?[oracle]_Jak_sprawdzi=E6_wielko=B6=E6_tabeli_=3F=3F?= =?ISO-8859-2?Q?Poszukjue_ksi=B1=BFki_"Oracle_?= =?ISO-8859-2?Q?optymalizacja_wydajno=B6ci"..?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • ponland.htw.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com