Trigerid kahe seotud tabelid põhjal

CREATE DATABASE triger2tabelid;
USE triger2tabelid;

Create table linnad(
linnID int PRIMARY KEY IDENTITY(1,1),
linnanimi varchar(15),
rahvaarv int);

Create table logi(
id int PRIMARY KEY IDENTITY(1,1),
aeg DATETIME,
toiming  varchar(100),
kasutaja varchar(70),
andmed text
)

CREATE TABLE maakond(
    maakondID int Primary KEY identity(1,1),
    maakond varchar(100) UNIQUE);
    
INSERT INTO maakond(maakond) 
VALUES ('Harjumaa');
INSERT INTO maakond(maakond)
VALUES ('Pärnumaa');

ALTER TABLE linnad ADD maakondID int; /*seosted loomine*/
ALTER TABLE linnad ADD CONSTRAINT fk_maakond
FOREIGN KEY (maakondID) References maakond(maakondID) 

CREATE TRIGGER linnaLisamine
ON linnad
FOR INSERT
AS
INSERT INTO logi(kasutaja, aeg, toiming, andmed)
SELECT
USER,
GETDATE(),
'linn on lisatud',
CONCAT(l.linnanimi, ', ', m.maakond)
FROM inserted l
INNER JOIN maakond m
ON m.maakondID = l.maakondID;

-- lisamiseks

INSERT INTO linnad(linnanimi, rahvaarv, maakondID)
VALUES ('Tallinn', 436863, 1);

SELECT * FROM linnad;
SELECT * FROM logi;

-- kustmisele triger

CREATE TRIGGER linnaKustutamine
ON linnad
FOR DELETE
AS
INSERT INTO logi(kasutaja, aeg, toiming, andmed)
SELECT
USER,
GETDATE(),
'linn on kustatud',
CONCAT(d.linnanimi, ', ', m.maakond)
FROM deleted d
INNER JOIN maakond m
ON m.maakondID = d.maakondID;

--kontollimiseks

DELETE FROM linnad
WHERE linnID = 2;

SELECT * FROM linnad;

SELECT * FROM logi;


CREATE TRIGGER linnaUuendamine
ON linnad
FOR UPDATE
AS
INSERT INTO logi(kasutaja, aeg, toiming, andmed)
SELECT
USER,
GETDATE(),
'linn on uuendatud',
CONCAT('vanad andmed -', d.linnanimi, ', ', m1.maakond, 'uuendatud andmed -', i.linnanimi, ', ', m2.maakond)
FROM deleted d
INNER JOIN inserted i
ON d.maakondID = i.maakondID
INNER JOIN maakond m1 ON d.maakondID = m1.maakondID
INNER JOIN maakond m2 ON i.maakondID = m2.maakondID;
-- kontroll

UPDATE linnad SET linnanimi = 'Taallinn-Väike', maakondID = 2 WHERE linnID = 1;

SELECT * FROM linnad;

SELECT * FROM logi;

SQL

Structured Query Language (SQL) (pronounced S-Q-Lhistorically “sequel”)[4][5] is a domain-specific language used to manage data, especially in a relational database management system (RDBMS). It is particularly useful in handling structured data, i.e., data incorporating relations among entities and variables.

Introduced in the 1970s, SQL offered two main advantages over older read–write APIs such as ISAM or VSAM. Firstly, it introduced the concept of accessing many records with one single command. Secondly, it eliminates the need to specify how to reach a record, i.e., with or without an index.

Originally based upon relational algebra and tuple relational calculus, SQL consists of many types of statements,[6] which may be informally classed as sublanguages, commonly: Data query Language (DQL), Data Definition Language (DDL), Data Control Language (DCL), and Data Manipulation Language (DML).[7]