Wpis z mikrobloga

Mircy z #sql #bazydanych #oracle
Mam zadanie ze zrobieniem trzech triggerów do bazy.
Pierwszy to banał - inkrementacja ID.
Nad drugim trochę posiedziałem, ale w końcu wyszedł - zmienia mi źle wpisane wartości w jednej kolumnie, tak to wygląda : klik
Trzeci pomysł jest chyba nietypowy. Mianowicie wymyśliłem trigger, który po dodaniu inserta, w którym numer jest większy niż 219999(2 pierwsze cyfry to 2 ostatnie cyfry roku kalendarzowego) wywala błąd, że nie można dodać bramy z 2022 roku.
' create or replace trigger NOWABRAMATRG before
insert or update on brama
for each row
when (new.numer >= 219999)
begin
RAISEAPPLICATIONERROR(-20666, 'NIE MOŻNA DODAĆ BRAMY NOWSZEJ NIZ Z 2021 ROKU! Numer bramy musi być mniejszy niż 219999');
end;
/'
Wywala mi to ładny błąd:
Może to tak działać?
gdziemojimbuspiatka - Mircy z #sql #bazydanych #oracle
Mam zadanie ze zrobieniem trz...

źródło: comment_1639658325vzj3fkLfVdhdi6daA95WKY.jpg

Pobierz
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@gdziemojimbuspiatka: jak chcesz sprawdzać, czy rok w numerze bramy zgadza się z bieżącym rokiem, to przyrównaj rok z bramy z tochar(sysdate,'YY') i wyjdziesz na swoje, wtedy będziesz mógł dodawać numery bram tylko w obrębie bieżącego roku

W raise
applicationerror zamiast zahardkodowanego 2021 robisz konkatenacje '...NIZ Z ||tochar(sysdate,'YYYY')||' ROKU!...'
  • Odpowiedz