Trigger - co jest źle

Trigger - co jest źle
Marek Majewski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Cześć,

Oracle. Nigdy nie tworzyłem triggera, nie wiem co dalej.

  1. Utworzyłem nową tabelę
    create table Persons (PersonID int primary key, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255));

  2. Stworzyłem trigger
    create trigger data_dodania
    before insert on pracownik
    for each row begin

set new.data_dodania = now()

end;

Pojawił się błąd:

Trigger DATA_DODANIA compiled

LINE/COL ERROR


3/1 PL/SQL: SQL Statement ignored
3/5 PL/SQL: ORA-00922: missing or invalid option
Errors: check compiler log

Nie znam na tyle oracle, żeby wiedzieć, co robię źle.

YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2386
0

Tak na oko:

Kopiuj
:new.data_dodania := sysdate;
Marek Majewski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Trochę poszło do przodu.
Ale jest inny błąd: Encountered the symbol end-of-life when expecting one of the following

AT
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Wklej kod triggera umieszczając go w odpowiednie znaczniki. Wtedy będzie nam łatwiej odpowiedzieć co jest źle.

Marek Majewski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Triggery nie wkleja się tam gdzie querry?

AT
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Wstaw kod triggera (odpowiedni sformatowany) w znaczniki tak jak poniżej.

Kopiuj
KOD TRIGGERA
Marek Majewski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

create trigger data_dodania2
before insert on pracownik
for each row begin

set new.data_dodania = sysdate()

end;

LINE/COL ERROR


3/1 PL/SQL: SQL Statement ignored
3/5 PL/SQL: ORA-00922: missing or invalid option
5/4 PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following: ( begin case declare end exception exit for goto if loop mod null pragma raise return select update while with <an identifier="identifier">

Marek Majewski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Przepraszam, za dużo przekleiłem, teraz zedytowałem i błędy są na górze.

YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2386
0
Kopiuj
create or replace trigger data_dodania2 
before insert on pracownik
for each row 
begin
  :new.data_dodania := sysdate;
end;
/
PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3895
0

Tak tylko zasugeruje, bo na Oracle się nie znam. Czemu nie rozwiązać tego wartością domyślną?

Kopiuj
alter table pracownik    modify(datat_dodania date  default sysdate);
abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
0

przypisanie w oracle to := a nie =

Marek Majewski
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6
0

Dziękuję za pomoc, trigger zadziałał.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.