Witam,
mam pytanie do osób znających bazy danych oracle. Na prywatne potrzeby analiz kursów akcji kilka lat temu stworzyłem i do tej pory rozwijam małą bazę danych (800 MB) na MSSQL Serwer Developer. Z przyczyn technicznych noszę się z zamiarem migracji na bazę Oracle (wersja Express). Mój plan jest następujący stworzyć identyczną strukturę bazy na platformie oracle jak na MSSQL Serwer, export-import danych i kontynuować dalsze analizy już tylko na Oracle. Ponieważ jestem samoukiem wiedziałem, że na początku będzie ciężko, ale żeby wyłożyć się na tak prostej kwestii jak zależności klucza obcego między dwoma tabelami, to tego nawet nie brałem pod uwagę.
A więc do rzeczy, o co chodzi.
mam dwie tabele "Slownik" i "Notowania". Każda z nich zawiera kolumnę "Symbol",
W tabeli "Slownik" kolumna "Symbol" jest kluczem jednokolumnowym kluczem głównym (Primary Key).
W tabeli "Notowania" kolumna "Symbol" jest częścią dwukolumnowego klucza głównego (Primary Key) DataSesji,Symbol
Chciałem utworzyć klucz obcy w tabeli "Notowania" w taki sposób, aby każda zmiana lub usunięcie czegokolwiek w kolumnie "Symbol" tabeli "Słownik" automatycznie aktualizowała odpowiedni wiersz w kolumnie "Symbol" tabeli "Notowania" (Tak mam w MSSQL Serwer).
Kod w Oracle, który miałby to robić wygląda następująco:
ALTER TABLE NOTOWANIA_GPW
ADD CONSTRAINT FK_NOTOWANIA_GPW
FOREIGN KEY (SYMBOL)
REFERENCES SLOWNIK (SYMBOL)
ON DELETE CASCADE
ON UPDATE CASCADE;
niestety, jego uruchomienie generuje następujący komunikat błędu:
Error (6,1): ORA-01735: invalid ALTER TABLE option
Gdy usunę TYLKO OSTATNIĄ linię powyższego kodu, wszystko jest OK. Na stronie Oracle znalazłem składnie "FOREIGN KEY Constraints" i wynika z niej, że obydwie klauzule "ON DELETE" i "ON UPDATE" z opcją "CASCADE" są obsługiwane.
Źródło: link
Pytanie, gdzie popełniam błąd w kodzie oracle, że nie mogę utworzyć opisanej zależności lub czy to możliwe, że Oracle naprawdę obsługuję TYLKO klauzulę "ON DELETE CASCADE" a klauzuli "ON UPDATE CASCADE" nie?
Z góry dziękuje za każdą formę pomocy.
Pozdrawiam
Dyktat