SQL TRiGGER

SQL trigger on spetsiaalne andmebaasi objekt mis mäivitab automaatselt teatud sündmus ( nt INSERT, UPDATE, DELETE). Trigerid aitavad automatiseerida protsessid andmebaasis.

SQL Server.

1.Loome andmebaasi ja kaks tabelit 1.tabel – kuhu kasutaja sisestab andmeid (linnad). 2.tabel -logi kus triger lisab jälgitud andmeid

CREATE DATABASE trigerMihkel
use trigerMihkel
--tabel linnad 
create table linnad(
linnId int primary key identity(1,1),
linnanimi varchar(50) unique,
rahvaarv int not null);
--tabel logi
CREATE TABLE logi(
Id int primary key identity(1,1),
kuupaev datetime, 
andmed TEXT);


2. trigeri loomine

INSERT TRIGGER, mis jälgib andmete lisamine tabelisse linnad.

Create TRIGGER linnaLisamine
on linnad 
for insert 
As 
insert into logi(kuupaev, andmed)
Select 
getdate(),
CONCAT ('lisarud linn: ', inserted.linnanimi,
' | rahvaarv: ', inserted.rahvaarv, ' id: ', inserted.linnId)
from inserted;

3. trigeri loomine

delete trigger , mis jälgib andmete kustutamist.

--delete trigger 
Create TRIGGER linnaLkustutamine
on linnad 
for delete 
As 
insert into logi(kuupaev, andmed)
Select 
getdate(),
CONCAT ('kustutatud linn: ', deleted.linnanimi,
' | rahvaarv: ', deleted.rahvaarv, ' id: ', deleted.linnId)
from deleted ;

4.trigeri loomine

Update triger

CREATE TRIGGER linnaUuendamine 
on linnad 
For update 
as 
insert into logi(kuupaev, andmed)
select
GETDATE(),
CONCAT (' vana linna andmed: ', d.linnanimi,
' | ', d.rahvaarv, ' | id: ', d.linnId, 
' vana linna andmed: ', i.linnanimi,
' | ', i.rahvaarv, ' | id: ', i.linnId)
from deleted  d inner join inserted i 
on d.linnId=i.linnId

Koostame samad trigerid XAMPP

1.insert trigger

2.DELETE trigger

3.Update trigger

Tagasi sql serveris teeme trigeri mis on isert ja delete ühes

Create TRIGGER linnaLisamineKustutamine
on linnad 
for insert, DELETE
As 
begin
SET NOCOUNT ON;
	insert into logi(kuupaev, andmed, kasutaja)
	Select 
	getdate(),
	CONCAT ('lisarud linn: ', inserted.linnanimi,
	' | rahvaarv: ', inserted.rahvaarv, ' id: ', inserted.linnId),
	SYSTEM_USER
	from inserted

	UNION ALL

	SELECT
	getdate(),
	CONCAT ('kustutatud linn: ', deleted.linnanimi,
	' | rahvaarv: ', deleted.rahvaarv, ' id: ', deleted.linnId),
	SYSTEM_USER
	from deleted ;
	

end;

Iseseisev töö

1.Insert triger