witam serdecznie,
od kilku dni borykam się z problemem dotyczącym zbudowania tab. która nie przechowuje duplikatów. Chciałabym stworzyć taką tab. która dla konkretnego pracownika
employess_id
pracującego w dziale departments_id
nie zapisze gdy już pracował w jakimś dniu, który znajduję się w przedziale czasowym który jest już zapisany w bazie danych. Dla wyjaśnienia, np:
N1(pracownik)
v_begin v_end
12.01.2010 18.01.2010
N2(ten sam pracownik , ale chcemy go wprowadzić do bazy)
v_begin v_end
13.01.2010 15.01.2010
buduje sprawdzanie (znajduje się w kodzie)
12.01.2010 < 15.01.2010
13.01.2010 < 18.01.2010 --tu się 2 porównania zgadzają wiec , przedział [13.01.2010 ,15.01.2010 ]nie powinien zostać zapisany do bazy danych
Kod przedstawia się następująco:
```sql
create table time_work_test (
id NUMBER(4) NOT NULL PRIMARY KEY,
employess_id NUMBER(4),
departments_id NUMBER(4),
v_begin TIMESTAMP,
v_end TIMESTAMP,
t_start TIMESTAMP,
t_stop TIMESTAMP)
CHECK (NOT EXISTS (SELECT N1.id
FROM time_work_test N1 WHERE 1 <= (SELECT COUNT(N2.employess_id)
FROM time_work_test N2
WHERE N1.employess_id = N2.employess_id
AND N1.departments_id = N2.departments_id
AND N1.v_begin <= N2.v_end
AND N2.v_begin <= N1.v_end)));
zwraca mi następujący komunikat błędu:
ORA-00922: missing or invalid option
Uprzejmie proszę o jakąś wskazówkę....?