Prvo hvala na odgovoru. Ja sam mozda loše objasnio problem pa cu sada postaviti čitav kod.
Problem je da koliko god puta ponovim insert kao ovaj
insert into reklama values(1,'Telenor - pametna mreza',1,1,'17',1,'09-dec-98',1,sysdate,1,sysdate,1,sysdate); on će u tabeli
reklama odraditi unos. To ne želim jer su taj datum i ta stranica već zauzeti. Želim da sa nekim ograničenjem da li kroz triger ili kroz nešto drugo ograničim.
Hvala još jednom!
CREATE TABLE Korisnik
(
idKorisnika NUMBER PRIMARY KEY,
ime VARCHAR2(20) NOT NULL,
prezime VARCHAR2(30) NOT NULL,
jmbg VARCHAR2(13),
email VARCHAR2(50),
telefon VARCHAR2(20),
username VARCHAR2(20) NOT NULL,
password VARCHAR2 (30) NOT NULL,
idVrste NUMBER NOT NULL,
nalogOd DATE NOT NULL,
nalogDo DATE NOT NULL
);
CREATE TABLE vrstaKorisnika
(
idVrste NUMBER PRIMARY KEY,
naziv VARCHAR2(30) NOT NULL,
opis VARCHAR2(200)
);
insert into vrstaKorisnika values(1,'Administrator','Osoba zaduzena za administraciju sistema');
insert into vrstaKorisnika values(2,'Korisnik','Obi?ni korisnik');
insert into korisnik values(2,'Janko','Jankovic','1209978123002','
[email protected]','067123457','janko','korisnik',1,'02-jan-99','31-dec-99');
insert into korisnik values(3,'Marko','Markovic','1209888123002','
[email protected]','067765432','marko','korisnik',2,'03-jan-99','31-dec-01');
insert into korisnik values(4,'PEtaR','PeTrOvIc','1509898123002','
[email protected]','067765432','petar','korisnik',2,'03-jan-99','31-dec-01');
CREATE TABLE Reklama
(
idReklame NUMBER PRIMARY KEY,
nazivReklame VARCHAR2(50) NOT NULL,
klijentID NUMBER NOT NULL,
prostorID NUMBER NOT NULL,
stranaBr NUMBER,
kolorId NUMBER,
izlaziKad DATE,
kreiraoKo NUMBER NOT NULL,
kreiraoKad TIMESTAMP NOT NULL,
azuriraoKo NUMBER NOT NULL,
azuriraoKad TIMESTAMP NOT NULL,
odobrioKo NUMBER NOT NULL,
odobrioKad TIMESTAMP NOT NULL
);
CREATE TABLE Klijent
(
idKlijenta NUMBER PRIMARY KEY,
nazivKlijenta VARCHAR2(50) NOT NULL,
adresa VARCHAR2(50),
postBr CHAR(5),
gradId NUMBER,
email VARCHAR2(50),
telefon VARCHAR2(20)
);
CREATE TABLE Prostor
(
id NUMBER PRIMARY KEY,
naziv CHAR(4) NOT NULL,
cijena DECIMAL(6,2) NOT NULL
);
CREATE TABLE Grad
(
id NUMBER PRIMARY KEY,
naziv VARCHAR(20) NOT NULL
);
insert into grad values(1,'Podgorica');
insert into grad values(2,'Nikši?');
insert into grad values(3,'Cetinje');
insert into klijent values(1,'Mapa','Ul. Slobode br 1.','81000',1,'
[email protected]','020123456');
insert into klijent values(2,'Mouse','Ul. Slobode br 2.','81000',1,'
[email protected]','020123456');
insert into prostor values(1,'1/2',400.20);
insert into prostor values(2,'1/1',700.50);
insert into reklama values(1,'Telekom - moj svijet',1,1,'12',1,'08-dec-99',1,sysdate,1,sysdate,1,sysdate);
insert into reklama values(1,'Telenor - pametna mreza',1,1,'17',1,'09-dec-98',1,sysdate,1,sysdate,1,sysdate);
insert into reklama values(1,'M-Tel',1,1,'16',1,'09-dec-99',1,sysdate,1,sysdate,1,sysdate);
insert into reklama values(7,'EPCG',1,1,'7',1,'09-dec-99',1,sysdate,1,sysdate,1,sysdate);
insert into reklama values(9,'ABC',1,1,'7',1,'09-dec-55',1,sysdate,1,sysdate,1,sysdate);
insert into reklama values(1,'Telenor - pametna mreza',1,1,'17',1,'09-dec-98',1,sysdate,1,sysdate,1,sysdate);
CREATE TABLE kolor
(
id NUMBER PRIMARY KEY,
naziv VARCHAR(20) NOT NULL
);
insert into kolor values (1,'crno-bijela');
insert into kolor values (2,'crna');
insert into kolor values (3,'kolor');
CREATE TABLE reklameLog
(
id NUMBER PRIMARY KEY,
akcija CHAR(10) NOT NULL,
nazivReklame VARCHAR2(50) NOT NULL,
kreiraoKo VARCHAR2 (30) NOT NULL,
kreiraoKad TIMESTAMP NOT NULL
);
insert into reklameLog values(1,'insert','I nije neka reklama','kreator',sysdate);
ALTER TABLE klijent ADD CONSTRAINT klijent_grad_FK FOREIGN KEY (gradId) REFERENCES Grad (id);
ALTER TABLE reklama ADD CONSTRAINT reklama_korisnik_FK FOREIGN KEY (kreiraoKo) REFERENCES korisnik (idKorisnika);
ALTER TABLE reklama ADD CONSTRAINT reklama_korisnik_FKv1 FOREIGN KEY (azuriraoKo) REFERENCES korisnik (idKorisnika);
ALTER TABLE reklama ADD CONSTRAINT reklama_korisnik_FKv2 FOREIGN KEY (odobrioKo) REFERENCES korisnik (idKorisnika);
ALTER TABLE reklama ADD CONSTRAINT reklama_prostor_FK FOREIGN KEY (prostorID) REFERENCES prostor (id);
ALTER TABLE reklama ADD CONSTRAINT reklama_klijent_FK FOREIGN KEY (klijentID) REFERENCES klijent (idKlijenta);
ALTER TABLE reklama ADD CONSTRAINT reklama_kolor_FK FOREIGN KEY (kolorId) REFERENCES kolor(id);
ALTER TABLE reklama ADD CONSTRAINT reklama_klijent_FK FOREIGN KEY (stranabr) REFERENCES reklama(id);
ALTER TABLE korisnik ADD CONSTRAINT korisnik_vrstaKorisnika_FK FOREIGN KEY (idVrste) REFERENCES vrstaKorisnika(idVrste);
-- triger kojim se obezbje?uje da idReklame uvijek bude najve?i slede?i..
create or replace trigger trg_reklama_INS
before insert on reklama
for each row
declare
maxID number;
begin
select max(idReklame)+1 into maxID from reklama;
:new.idReklame := maxID;
end;
-- triger koji postavlja vrijednosti atributa ime i prezime uppercase nezavisno u kom obliku se unose
create or replace trigger trg_korisnik
before insert or update of ime,prezime
on korisnik
for each row
begin
select UPPER(:new.ime) into :new.ime from dual;
select UPPER(:new.prezime) into :new.prezime from dual;
end;
-- triger koji upisuje logove u tabelu reklameLog nakon što se dogodi neka od komandi insert, update ili delete
create or replace trigger trg_INS_UPD_DEL_log
before insert or update of prostorID,stranaBr or delete
on reklama
for each row
declare
v_kreiraoKo varchar2(30);
maxId number;
begin
select user into v_kreiraoKo from dual;
select max(id)+1 into maxId from reklameLog;
if inserting then
insert into reklameLog values(maxId,'insert',:new.nazivReklame,v_kreiraoKo,sysdate);
elsif updating ('prostorID')then
insert into reklameLog (id,akcija,kreiraoKo,kreiraoKad) values(maxId,'update',v_kreiraoKo,sysdate);
elsif updating ('stranaBr')then
insert into reklameLog (id,akcija,kreiraoKo,kreiraoKad) values(maxId,'update',v_kreiraoKo,sysdate);
else
insert into reklameLog (id,akcija,kreiraoKo,kreiraoKad) values(maxId,'delete',v_kreiraoKo,sysdate);
end if;
end;