Bug #2183 » TiggerDelimit.txt
| 1 |
USE [MinovaHR_Indomobil_Dev] |
|---|---|
| 2 |
GO |
| 3 |
/****** Object: Trigger [dbo].[CombinedTrigger] Script Date: 06/06/2023 17:39:14 ******/ |
| 4 |
SET ANSI_NULLS ON |
| 5 |
GO |
| 6 |
SET QUOTED_IDENTIFIER ON |
| 7 |
GO |
| 8 |
CREATE TRIGGER [dbo].[CombinedTriggerDelimit] |
| 9 |
ON [dbo].[hr_md_orm_object] |
| 10 |
AFTER INSERT |
| 11 |
AS |
| 12 |
BEGIN |
| 13 |
SET NOCOUNT ON; |
| 14 |
|
| 15 |
-- Simpan record baru yang di-insert pertama kali |
| 16 |
INSERT INTO hr_md_orm_object |
| 17 |
SELECT * |
| 18 |
FROM inserted |
| 19 |
WHERE object NOT IN ( |
| 20 |
SELECT object |
| 21 |
FROM hr_md_orm_object |
| 22 |
WHERE class = 'DE' |
| 23 |
); |
| 24 |
|
| 25 |
-- Hapus catatan duplikat berdasarkan objectid dan start_date maksimum |
| 26 |
DELETE FROM hr_md_orm_object |
| 27 |
WHERE object IN ( |
| 28 |
SELECT object |
| 29 |
FROM ( |
| 30 |
SELECT object, ROW_NUMBER() OVER (PARTITION BY object ORDER BY start_date DESC) AS RowNumber |
| 31 |
FROM hr_md_orm_object |
| 32 |
WHERE class = 'DE' AND object IN ( |
| 33 |
SELECT object |
| 34 |
FROM hr_md_orm_object |
| 35 |
WHERE class = 'DE' |
| 36 |
GROUP BY object |
| 37 |
HAVING COUNT(*) > 1 |
| 38 |
) |
| 39 |
) AS duplicates |
| 40 |
WHERE duplicates.RowNumber = 1 |
| 41 |
) AND class = 'DE' |
| 42 |
AND end_date = ( |
| 43 |
SELECT MAX(end_date) |
| 44 |
FROM hr_md_orm_object |
| 45 |
WHERE object IN ( |
| 46 |
SELECT object |
| 47 |
FROM ( |
| 48 |
SELECT object, ROW_NUMBER() OVER (PARTITION BY object ORDER BY start_date DESC) AS RowNumber |
| 49 |
FROM hr_md_orm_object |
| 50 |
WHERE class = 'DE' AND object IN ( |
| 51 |
SELECT object |
| 52 |
FROM hr_md_orm_object |
| 53 |
WHERE class = 'DE' |
| 54 |
GROUP BY object |
| 55 |
HAVING COUNT(*) > 1 |
| 56 |
) |
| 57 |
) AS duplicates |
| 58 |
WHERE duplicates.RowNumber > 1 |
| 59 |
) |
| 60 |
); |
| 61 |
|
| 62 |
-- Memperbarui field enddate pada tabel hr_md_orm_relationship |
| 63 |
UPDATE r |
| 64 |
SET r.end_date = i.end_date |
| 65 |
FROM hr_md_orm_relationship AS r |
| 66 |
INNER JOIN hr_md_orm_object AS i ON r.[object] = i.[object] |
| 67 |
WHERE r.class = 'DE' |
| 68 |
AND i.class = 'DE'; -- Ubah sesuai dengan hubungan antara tabel yang sesuai |
| 69 |
END; |
- « Previous
- 1
- …
- 3
- 4
- 5
- Next »