Project

General

Profile

PH_HISTORY_Update.sql

Sergey Kolyshkin, 26/01/2023 18:18

Download (1.39 KB)

 
1
--USE [pioner]
2

    
3
DECLARE @ver int
4
SET @ver = 4
5

    
6
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[components]') AND type in (N'U'))
7
BEGIN
8
        IF EXISTS( SELECT veri FROM [components] WHERE name='mdb.ph_history' AND veri>=@ver )
9
        BEGIN
10
                PRINT N'Current PH_HISTORY version is equal or higher than '+ CAST(@ver AS varchar(10))
11
                --RAISERROR('Script terminated...',16,1) 
12
                RETURN        
13
        END                
14
END
15
ELSE
16
BEGIN
17
        PRINT N'Components table not found. Script exit'
18
        RETURN
19
END
20

    
21
BEGIN TRY
22

    
23
BEGIN TRAN
24

    
25
PRINT N'Script begin'
26

    
27
--добавляем колонку
28

    
29
EXEC sp_executesql 
30
N'
31
ALTER TABLE [dbo].[PH_HISTORY] ADD [GroupID] [int] NULL
32

33
PRINT ''Column GroupID added to table [PH_HISTORY]''
34
'
35

    
36
-- вычисляем значение для этой колонки
37
EXEC sp_executesql 
38
N'
39
UPDATE ph_hist
40
SET ph_hist.GroupID = 
41
(        
42
        SELECT MIN(ph_hist_sub.ID)
43
        FROM PH_HISTORY as ph_hist_sub
44
        WHERE ph_hist_sub.PH_ID = ph_hist.PH_ID
45
                AND ph_hist_sub.UserName = ph_hist.UserName
46
                AND ph_hist_sub.HostName = ph_hist.HostName
47
                AND ABS(DATEDIFF(second, ph_hist_sub.ModifyDate, ph_hist.ModifyDate)) < 5 
48
)
49
FROM [dbo].[PH_HISTORY] AS ph_hist
50
WHERE ph_hist.GroupID IS NULL
51

52
PRINT ''GroupID calculated for existing items''
53
'
54

    
55

    
56
UPDATE [dbo].[components] 
57
SET veri = @ver 
58
WHERE name='mdb.ph_history'
59

    
60
COMMIT TRAN
61

    
62
PRINT N'Script end!'
63

    
64
END TRY
65
BEGIN CATCH
66
        ROLLBACK TRAN
67
        PRINT N'Script error'
68
END CATCH;
Add picture from clipboard (Maximum size: 742 MB)