我有以下DDL,我的小组交配执行以添加新列:
ALTER TABLE [dbo].[Question] ADD GlobalId VARCHAR (50) DEFAULT(NEWID());
我现在想要更改它,以便默认值只适用于生成的NEWID()的最后八个字符。有人可以告诉我如何删除默认值并创建一个新的默认值来执行此操作。非常感谢。
答案 0 :(得分:1)
只是提出一个想法,select substring(reverse(newid()),0,8);
将产生您需要的价值。
可能ALTER TABLE [dbo].[Question] ADD GlobalId VARCHAR (50) DEFAULT(substring(reverse(newid()),0,8));
会为你做。
<强> EDITED 强> @Melina:我如何删除现有默认值并将其添加为新默认值?
select col1,col2, ... substring(reverse(GlobalId, 0, 8)) into TEMP_T from [dbo].[Question];
drop table [dbo].[Question];
create table [dbo].[Question] (col1 type1, col2 type2 ..., GlobalId VARCHAR (8) DEFAULT(substring(reverse(newid()),0,8)));
答案 1 :(得分:0)
我认为你可以通过这种方式做到这一点
Declare @varNewId as nvarchar(50)
set @varNewId =( select RIGHT(NewID(),3))
ALTER TABLE [dbo].[Question] ADD GlobalId VARCHAR (50) DEFAULT(@varNewId);