Oracle i sequence
Greg - 03-08-2007 09:28
Oracle i sequence
Czesc.
Jak w bazie oracle poszukać sequence do tabeli używajc do tego sql-a lub TOAD-a.
hey.
Marek Chwojnicki - 03-08-2007 09:28
Greg napisał(a): > Czesc. > > Jak w bazie oracle poszukać sequence do tabeli używajc do tego sql-a lub > TOAD-a. > O ile wiem Oracle nie wiąże sekwencji z tabelą bezpośrednio - trzeba jeszcze do tego dołożyć trigger "before insert" który to obsłuży.
Uzywasz TOAD-a? OK, odpal sobie schema browser, znajdź tabelę o którą Ci chodzi, w prawym oknie przejdź na zakładkę "triggers" i znajdź sobie trigger wypełniający kolumnę o którą CI chodzi - tam znajdziesznazwę sekwencji z której jest wypełniana.
Pomijam tak oczywiste sprawy, że jeżeli projektant bazy miał trochę oleju w głowie, to można ją znaleźć po prostu po nazwie, bo będzie się nazywała bardzo podobnie do tabeli którą obsługuje, np. tabela SCHEMAT.TABELA1 byłaby u mnie obsłużona sekwencją SCHEMAT.SEQ_TABELA1.
Pozdrawiam, Trolu
Greg - 03-08-2007 09:28
> Uzywasz TOAD-a? OK, odpal sobie schema browser, znajdź tabelę o którą Ci > chodzi, w prawym oknie przejdź na zakładkę "triggers" i znajdź sobie > trigger wypełniający kolumnę o którą CI chodzi - tam znajdziesz nazwę > sekwencji z której jest wypełniana.
Tak zrobiłem ale nie znalazłem tej nazwy, istnieje jeszcze jakiś inny sposób? Wiem jak nazywa sie sequence do tej tabeli ale chcialbym wiedziec jak do tego dojść. Ktoś kiedyś zakładał baze w której nie moge sie teraz polapac.
nawiiwan@gazeta.pl - 03-08-2007 09:28
On 3 Sie, 08:50, Greg <greg...@poczta.onet.pl> wrote: > > Uzywasz TOAD-a? OK, odpal sobie schema browser, znajdź tabelę o którą Ci > > chodzi, w prawym oknie przejdź na zakładkę "triggers" i znajdź sobie > > trigger wypełniający kolumnę o którą CI chodzi - tam znajdziesz nazwę > > sekwencji z której jest wypełniana. > > Tak zrobiłem ale nie znalazłem tej nazwy, istnieje jeszcze jakiś inny > sposób? > Wiem jak nazywa sie sequence do tej tabeli ale chcialbym wiedziec jak do > tego dojść. > Ktoś kiedyś zakładał baze w której nie moge sie teraz polapac.
Zakładając, że sekwencja jest używana w triggerze to warto zobaczyć ciało triggera. Poniższe zapytanie da w wyniku ciałko triggera: select trigger_body from dba_triggers where table_name like 'nazwa_tabeli'
Zwróć uwagę na wielkość liter w nazwie tabeli.
Znalazłem opis jak użyć sequence do generowania kolejnych numerów, może to będzie przydatne: http://jen.fluxcapacitor.net/geek/autoincr.html
Pozdrawiam, Maciek
Adamm - 04-08-2007 00:03
Użytkownik "Greg" <greg333@poczta.onet.pl> napisał w wiadomości news:46B2D023.E5D600CD@poczta.onet.pl... >> Uzywasz TOAD-a? OK, odpal sobie schema browser, znajdź tabelę o którą Ci >> chodzi, w prawym oknie przejdź na zakładkę "triggers" i znajdź sobie >> trigger wypełniający kolumnę o którą CI chodzi - tam znajdziesz nazwę >> sekwencji z której jest wypełniana. > > Tak zrobiłem ale nie znalazłem tej nazwy, istnieje jeszcze jakiś inny > sposób? > Wiem jak nazywa sie sequence do tej tabeli ale chcialbym wiedziec jak do > tego dojść. > Ktoś kiedyś zakładał baze w której nie moge sie teraz polapac.
Nie ma reguły, że sekwencja jest użyta w trigerze. Możesz jeszcze spotkać takie rozwiązanie, że masz przygotowaną w procedurkę/pakiet PL/SQL, przekazujesz jej dane do wstawienia, a procedurka pobiera z sekwencji (przu okazji np. waliduje dane) i wstawia do tabeli.
W TOADzie wpisz nazwę tabeli, naciśnij F4 i przejdź na zakładkę "Used by" , tam zobacz jakie pakiety, procedury, funkcje uzywają tej tabelki i ... szukaj cierpliwie ;-) To zadziała jeżeli odpowiedni kawałek porgramu PL/SQL jest zapisany w bazie. W przypadku, jeżeli pobranie z sekwencji wykonuje np. formatka w aplikacji ... to masz gorzej, musiałbyś pogrzebać w kodzie formatki.
Pozdrawiam Adam
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
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.pldoc.pisz.plpdf.pisz.plmisida.pev.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 |
|