[Oracle] Jak zrobic taki indeks..
remg - 05-04-2006 00:03
[Oracle] Jak zrobic taki indeks..
Witam, na jednej z tabel mojej aplikacji potrzebuje zrobic unikalny indeks, ktory zabroni wstawienia powtarzalnych danych. Z tym ze niepowtarzalnosc danych bedzie uzyskana nie na etapie robienia inserta do tabeli, tylko dopiero pozniej po zrobieniu update'u. Potrzebuje wiec zrobic indeks unikalny ktory nie bedzie bral pod uwage kolumn z wartoscią NULL. Czy cos takiego jest mozliwe w Oraclu? Czy indeksy oparte na funkcjach mogą tu pomoc? Moze ktos ma jakis przyklad jak takie cos zrobic..
pozdrawiam, remg
=?ISO-8859-2?Q?Mase=B3?= - 05-04-2006 00:03
remg wrote: > Witam, > na jednej z tabel mojej aplikacji potrzebuje zrobic unikalny indeks, ktory > zabroni wstawienia powtarzalnych danych. Z tym ze niepowtarzalnosc danych > bedzie uzyskana nie na etapie robienia inserta do tabeli, tylko dopiero > pozniej po zrobieniu update'u. Potrzebuje wiec zrobic indeks unikalny ktory > nie bedzie bral pod uwage kolumn z wartoscią NULL. Czy cos takiego jest > mozliwe w Oraclu? Czy indeksy oparte na funkcjach mogą tu pomoc? Moze ktos > ma jakis przyklad jak takie cos zrobic..
A kiedy bedzie robiony ten update? Bo moze wystarczy opoznic moment sprawdzania wiezow (deferred, deferrable i jakos tak do nakarmienia googla...)
Pozdro
Maseł
remg - 05-04-2006 00:03
Użytkownik "Maseł" <mmasel@poczta.onet.pl> napisał w wiadomości news:c57cb3ad8c8ebc84c1910fd6df0805e3@masel.cs.put .poznan.pl... > A kiedy bedzie robiony ten update? > Bo moze wystarczy opoznic moment sprawdzania wiezow (deferred, > deferrable i jakos tak do nakarmienia googla...) > > Pozdro >
Niestety to nei wystarczy, bo po prostu update moze zostac zrobiony w dowolnej chwili pozniej i wtedy dopiero indeks jakby powinien zadzialac. Ale juz znalazlem rozwiązanie, wystarczy dac function based index i za pomocą decode lub case ograniczyc zwracane przez indeks kolumny do tych ktore są <> null
Piotrek Kapczuk - 06-04-2006 00:13
In news:e0tabl$lsj$1@nemesis.news.tpi.pl, remg <remq75@wp.pl> typed:
> Witam, > na jednej z tabel mojej aplikacji potrzebuje zrobic unikalny indeks, > ktory zabroni wstawienia powtarzalnych danych. Z tym ze > niepowtarzalnosc danych bedzie uzyskana nie na etapie robienia > inserta do tabeli, tylko dopiero pozniej po zrobieniu update'u. > Potrzebuje wiec zrobic indeks unikalny ktory nie bedzie bral pod > uwage kolumn z wartoscią NULL. Czy cos takiego jest mozliwe w Oraclu? > Czy indeksy oparte na funkcjach mogą tu pomoc? Moze ktos ma jakis > przyklad jak takie cos zrobic..
Da sie coś takiego zrobić.
Mam tabele gdzie kolumna zezwala na nulle, a indeks na tej kolumnie jest typu Unique.
No chyba, że Cię źle zrozumiałem.
-- Pozdrawiam Piotrek Kapczuk
=?ISO-8859-2?Q?Micha=B3?= Kuratczyk - 06-04-2006 00:13
Piotrek Kapczuk wrote: > Mam tabele gdzie kolumna zezwala na nulle, a indeks na tej kolumnie jest > typu Unique.
Co jest zgodne z dokumentacją: http://download-uk.oracle.com/docs/c...ema.htm#i18631
NULL values in indexes are considered to be distinct except when all the non-NULL values in two or more rows of an index are identical, in which case the rows are considered to be identical. Therefore, UNIQUE indexes prevent rows containing NULL values from being treated as identical. This does not apply if there are no non-NULL values?in other words, if the rows are entirely NULL.
-- Michał Kuratczyk
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.platanvarne633.opx.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 |
|