Toon posts:

[SQL] Wie kan mij helpen met een trigger

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

wie kan mij helpen met een trigger. Voor sommige is dit misschien makkelijk maar voor mij niet. Ik ben bezig met het maken van een database/informatie systeem voor huisartsen praktijk(voor school). In Oracle heb ik de tabellen gemaakt en in Access heb de tabellen gelinkt. In access maak ik dus een GUI voor de arts.
Hierbij kan je een afspraak maken voor een patient. En je kunt in een ander scherm de consultgegevens invoeren.
Maar nu kun je bij het maken van een afspraak twee keer hetzelfde datum en tijdstip invoeren. Dit mag eigenlijk niet. Want je kunt niet 2 afspraken op een moment hebben.
Kan iemand mij daarmee opweg helpen met een trigger? Onderstaande is niet goed.

create or replace trigger check_datumtijdstip
before insert or update
On consult
For each row

BEGIN
select datum
from consult;

If :new.datum = ld.datum
AND :new.tijdstip = ld.tijdstip
Then raise_application_error( -20000, 'Deze datum en tijdstip is al in gebruik.');


end if;
end;

Wie kan mij helpen?

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Je moet dat niet doen met een trigger; je kan dat mooier oplossen door een unique constraint of een unique index op die velden te leggen.

Daarnaast kan je ook code-tags gebruiken om je code te formatten.

https://fgheysels.github.io/


Verwijderd

Topicstarter
Sorry maar kun je een concreet voorbeeld geven?

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 14:00

JaQ

Okay, pak een boek en lees over pl/sql:

select <<kolomnamen>>
into <<variabelenaam>>
from <<tabelnaam>>
where <<wherestatement>>

Verder ben je al een stukje op de goede weg. Probeer hier eens wat te zoeken naar pl/sql en je kan ongetwijfeld werkende voorbeelden vinden (waar je ook wat mee kan).
Deze check is wat moeilijk voor een checkconstraint : de startdatum van de "nieuwe" afspraak mag niet "tussen" een bestaande start en/of einddatum van een afspraak liggen, hetzelfde geld voor de einddatum. Hierbij ga ik er even vanuit dat een datum in dit geval een timestamp is (dus dd-mm-yyyy hh24:mi)

Ik denk dat je er met deze hints uit zou moeten kunnen komen.

Egoist: A person of low taste, more interested in themselves than in me


Verwijderd

Topicstarter
ik gebruik geen einddatum. Er mogen geen 2 dezelfde datum en tijdstippen in de database ingevoerd worden

  • whoami
  • Registratie: December 2000
  • Laatst online: 15:14
Als je niet te maken hebt met overlappingen ed., en dus gewoon wilt voorkomen dat bv deze combinatie geen 2x mag voorkomen in je DB:

21/05/2004 20:00

Dan leg je gewoon een unique index op dat veld (of op de combinatie van velden) die uniek moeten zijn.
Kijk eens in je manual wat een unique index en een unique constraint is, en hoe je die moet implementeren in Oracle.

https://fgheysels.github.io/

Pagina: 1