Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --get the type
- declare @type nvarchar (50) =
- (
- SELECT
- TYPE_NAME(system_type_id)
- FROM
- sys.columns
- WHERE
- name = 'measurement'
- AND [object_id] = OBJECT_ID('[dbo].[tevent]')
- )
- if @type<>'decimal'
- begin
- select
- @type
- IF NOT EXISTS
- (
- SELECT *
- FROM
- [information_schema].[columns]
- WHERE
- table_name = 'tevent'
- AND table_schema = 'dbo'
- AND column_name = 'measurement_helper'
- )
- BEGIN
- --add tmp
- ALTER TABLE tevent add measurement_helper decimal(15,2) NOT NULL DEFAULT '0.00'
- --Copy from old nvarchar column to new column with trim and conversion.
- update
- tevent
- set measurement_helper=CONVERT(decimal(15,2), REPLACE(LTRIM(RTRIM(measurement)), ',', '.'))
- where
- ISNUMERIC(measurement)=1
- -- Drop old nvarchar column.
- IF EXISTS
- (
- SELECT *
- FROM
- dbo.sysobjects
- WHERE
- id = OBJECT_ID(N'[dbo].[DF_tevent_measurement]')
- AND type = 'D'
- )
- BEGIN
- ALTER TABLE [dbo].[tevent]
- drop CONSTRAINT [DF_tevent_measurement]
- ALTER TABLE tevent
- drop column measurement
- END
- else
- begin
- ALTER TABLE tevent
- drop column measurement
- end
- -- Rename numeric column to old column name.
- IF EXISTS
- (
- SELECT *
- FROM
- [information_schema].[columns]
- WHERE
- table_name = 'tevent'
- AND table_schema = 'dbo'
- AND column_name = 'measurement_helper'
- )
- begin
- EXEC sp_rename
- 'tevent.measurement_helper',
- 'measurement',
- 'COLUMN'
- end
- -- add dropped constraint
- IF NOT EXISTS
- (
- SELECT *
- FROM
- dbo.sysobjects
- WHERE
- id = OBJECT_ID(N'[dbo].[DF_tevent_measurement]')
- AND type = 'D'
- )
- BEGIN
- ALTER TABLE [dbo].[tevent] ADD CONSTRAINT [DF_tevent_measurement] DEFAULT ('0') FOR [measurement]
- END
- end
- else
- begin
- select
- 'helper column exists'
- end
- end
- else
- begin
- select
- 'already modified'
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement