UPDATE JOIN бичих нь: MsSQL, MySQL, pgSQL

Хааяа UPDATE JOIN хийх хэрэгцээ гардаг. Заримдаа хэрхэн бичихээ мартчих юм. T-SQL-ийн хувьд хэд хэдэн арга бий, гэхдээ би доор бичсэн хувилбарыг ашиглаад сурчихсан.

T-SQL

UPDATE blog_tagging AS bt
	SET bt.tag = t.tag_name
	FROM tbl_tags AS t
	WHERE bt.tag_id = t.tag_id

MySQL

UPDATE blog_tagging AS bt
	LEFT JOIN tbl_tags AS t ON bt.tag_id = t.tag_id
	SET bt.tag = t.tag_name

pgSQL

UPDATE blog_tagging bt
	SET tag= t.tag_name
	FROM tbl_tags t
	WHERE bt.tag = t.tag_name

ЖИЧ: pgSQL UPDATE JOIN нэмэв.

Advertisements

Датабаз дээр trigger бичих нь: MsSQL ба MySQL

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 – Зассаны дараа

%d bloggers like this: