PH_HISTORY_Update.sql
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;
|