Alter "Default" in SQL Server -


i have custom default value in sql server 2008 table.

similar

create default [dbo].[default_timestamp]     getdate() 

now want change value in default.

create default [dbo].[default_timestamp]     getutcdate() 

before can edit existing one, need drop first 1 , recreate it.

drop default [dbo].[default_timestamp] 

it gives following error.

msg 3716, level 16, state 3, line 4
default 'dbo.default_timestamp' cannot dropped because bound 1 or more column.

since default use few tables cannot drop , recreate new one.

i know need unbind tables default before can recreate it.

can provide script list table , columns bound default?

it's multi-step process:

1) find object_id default :

declare @defaultobjectid int select @defaultobjectid = object_id('default_timestamp') 

2) find columns reference default:

select      columnname = c.name,     tablename = t.name,     unbindcmd = 'exec sp_unbindefault ''' + t.name + '.' + c.name + '''' sys.columns c inner join sys.tables t on c.object_id = t.object_id default_object_id = @defaultobjectid 

this produce list of unbindcmd commands remove default columns.

3) now, copy column sql server mgmt studio window, , execute in new query window "unbind" default columns

4) define new default

however: these days, not define new default per se - can't set default constraint on columns in question directly?

alter table dbo.yourtable add constraint df_yourtable_timestamp default getutcdate() yourcolumnname 

seems easier work going future! when explicitly name constraint, can find , drop constraint again, if need be.


Comments

Popular posts from this blog

c# - SVN Error : "svnadmin: E205000: Too many arguments" -

c++ - Using OpenSSL in a multi-threaded application -

All overlapping substrings matching a java regex -