select * from kupac 
go

-- problem: brisati podatke u bazi ili ih samo označavati kao obrisane, kako bi se zadržala povijest tih podataka

-- dodavanje stupca koji će pokazivati je li neki kupac aktualan ili je izbrisan
alter table Kupac
add
	Deleted bit not null constraint DF_Kupac_Deleted default 0
go

select * from kupac
go

-- kreiranje pogleda koji pokazuje podatke o kupcima i njihovim računima
create view vKupacRacun
as
	select k.IDKupac, k.Ime, k.Prezime, k.Telefon, r.DatumIzdavanja, r.BrojRacuna
	from kupac as k
	inner join racun as r
	on k.IDKupac=r.KupacID
go

select * from vKupacRacun
go

-- neuspješan pokušaj brisanja kupca i njegovih računa korištenjem pogleda
delete from vKupacRacun
where IDKupac=378
go

-- kreiranje okidača koji će umjesto željenog brisanja kupca samo označiti kao izbrisanog
create trigger t_KupacRacun
on vkupacracun
instead of delete
as
 update kupac
 set deleted=1
 where IDKupac in (select idkupac from deleted)
 go

-- pokušaj brisanja kupca korištenjem pogleda
delete from vKupacRacun
where IDKupac in (378, 216)

-- provjera je li brisanje provedeno
select * from vKupacRacun
where IDKupac in (378, 216)

select * from kupac where IDKupac in (378, 216)

alter table Kupac drop constraint DF_Kupac_Deleted
alter table Kupac drop column Deleted
