Advertisement
Guest User

Untitled

a guest
Apr 8th, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 1.91 KB | None | 0 0
  1. --get the type
  2. declare @type nvarchar (50) =
  3. (
  4.     SELECT
  5.         TYPE_NAME(system_type_id)
  6.     FROM
  7.         sys.columns
  8.     WHERE
  9.         name            = 'measurement'
  10.         AND [object_id] = OBJECT_ID('[dbo].[tevent]')
  11. )
  12. if @type<>'decimal'
  13. begin
  14.     select
  15.         @type
  16.     IF NOT EXISTS
  17.     (
  18.         SELECT *
  19.         FROM
  20.             [information_schema].[columns]
  21.         WHERE
  22.             table_name       = 'tevent'
  23.             AND table_schema = 'dbo'
  24.             AND column_name  = 'measurement_helper'
  25.     )
  26.     BEGIN
  27.         --add tmp
  28.         ALTER TABLE tevent add measurement_helper decimal(15,2) NOT NULL DEFAULT '0.00'
  29.         --Copy from old nvarchar column to new column with trim and conversion.
  30.         update
  31.             tevent
  32.         set measurement_helper=CONVERT(decimal(15,2), REPLACE(LTRIM(RTRIM(measurement)), ',', '.'))
  33.         where
  34.             ISNUMERIC(measurement)=1
  35.         -- Drop old nvarchar column.
  36.         IF EXISTS
  37.         (
  38.             SELECT *
  39.             FROM
  40.                 dbo.sysobjects
  41.             WHERE
  42.                 id       = OBJECT_ID(N'[dbo].[DF_tevent_measurement]')
  43.                 AND type = 'D'
  44.         )
  45.         BEGIN
  46.             ALTER TABLE [dbo].[tevent]
  47.             drop CONSTRAINT [DF_tevent_measurement]
  48.             ALTER TABLE tevent
  49.             drop column measurement
  50.         END
  51.         else
  52.         begin
  53.             ALTER TABLE tevent
  54.             drop column measurement
  55.         end
  56.         -- Rename numeric column to old column name.
  57.         IF EXISTS
  58.         (
  59.             SELECT *
  60.             FROM
  61.                 [information_schema].[columns]
  62.             WHERE
  63.                 table_name       = 'tevent'
  64.                 AND table_schema = 'dbo'
  65.                 AND column_name  = 'measurement_helper'
  66.         )
  67.         begin
  68.             EXEC sp_rename
  69.                 'tevent.measurement_helper',
  70.                 'measurement',
  71.                 'COLUMN'
  72.         end
  73.         -- add dropped constraint
  74.         IF NOT EXISTS
  75.         (
  76.             SELECT *
  77.             FROM
  78.                 dbo.sysobjects
  79.             WHERE
  80.                 id       = OBJECT_ID(N'[dbo].[DF_tevent_measurement]')
  81.                 AND type = 'D'
  82.         )
  83.         BEGIN
  84.             ALTER TABLE [dbo].[tevent] ADD CONSTRAINT [DF_tevent_measurement] DEFAULT ('0') FOR [measurement]
  85.         END
  86.     end
  87.     else
  88.     begin
  89.         select
  90.             'helper column exists'
  91.     end
  92. end
  93. else
  94. begin
  95.     select
  96.         'already modified'
  97. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement