Датабаз дээр trigger бичих нь: MsSQL ба MySQL
2011.03.24 3 Comments
MySQL, MSSQL датабазын хүснэгт дээр trigger бичих нь.
MSSQL / T-SQL
Insert Trigger
CREATE TRIGGER trigger_insert1
ON table1
FOR INSERT
AS
BEGIN
UPDATE table2
SET field_total = field_total + inserted.field_name1
END
Update Trigger
CREATE TRIGGER trigger_update1
ON table1
INSTEAD OF UPDATE
AS
BEGIN
SELECT t1.*, i.* FROM table1 t1
JOIN inserted i ON t1.field_id = i.field_id
END
Delete Trigger
CREATE TRIGGER trigger_delete1
ON table1
FOR DELETE
AS
BEGIN
INSERT INTO logTableName
SELECT * FROM deleted
END
Trigger Event
deleted - DELETE trigger үед дата нь deleted гэсэн хүснэгт хэлбэрээр байна.
inserted - INSERT, UPDATE trigger үед дата нь inserted гэсэн хүснэгт хэлбэрээр байна.
Trigger Time
FOR DELETE – Устгахаас өмнө
FOR INSERT – Нэмэхээс өмнө
FOR UPDATE – Засахаас өмнө
FOR INSERT, UPDATE – Нэмж, Засахаас өмнө
AFTER DELETE – Устгасаны дараа
AFTER INSERT – Нэмсэний дараа
AFTER UPDATE – Зассаны дараа
AFTER INSERT, UPDATE – Нэмж, Зассаны дараа
INSTEAD OF DELETE – Устгахын оронд
INSTEAD OF INSERT – Нэмэхийн оронд
INSTEAD OF UPDATE – Засахын оронд
INSTEAD OF INSERT, UPDATE – Нэмж, Засахын оронд
MySQL
Insert Trigger
CREATE TRIGGER trigger_insert1
BEFORE INSERT
ON table1
FOR EACH ROW
BEGIN
UPDATE table2
SET field_total = field_total + NEW.field_name1
END;
Update Trigger
CREATE TRIGGER trigger_update1
AFTER UPDATE
ON table1
FOR EACH ROW
BEGIN
UPDATE table2
SET field_total = field_total + NEW.field_name1
END
Delete Trigger
CREATE TRIGGER trigger_delete1 AFTER DELETE ON table1 FOR EACH ROW BEGIN INSERT INTO log_table_1 (id, field1, field2, field_date) values( old.id, old.field1, old.field2, NOW() ); END;
Trigger Event
OLD - DELETE trigger үед дата нь OLD гэсэн хүснэгт хэлбэрээр байна.
NEW - INSERT, UPDATE trigger үед дата нь NEW гэсэн хүснэгт хэлбэрээр байна.
Trigger Time
BEFORE DELETE – Устгахаас өмнө
BEFORE INSERT – Нэмэхээс өмнө
BEFORE UPDATE – Засахаас өмнө
AFTER DELETE – Устгасаны дараа
AFTER INSERT – Нэмсэний дараа
AFTER UPDATE – Зассаны дараа

Сэтгэгдэл