Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 如何为SQL Server列创建默认值,以便只插入NEWID()的最后十个字符?_Sql Server - Fatal编程技术网

Sql server 如何为SQL Server列创建默认值,以便只插入NEWID()的最后十个字符?

Sql server 如何为SQL Server列创建默认值,以便只插入NEWID()的最后十个字符?,sql-server,Sql Server,我的团队伙伴执行了以下DDL以添加新列: ALTER TABLE [dbo].[Question] ADD GlobalId VARCHAR (50) DEFAULT(NEWID()); 现在我想更改它,使默认值仅适用于生成的NEWID()的最后八个字符。有人能告诉我如何删除默认设置并创建一个新的默认设置来实现这一点吗。非常感谢 仅给出一个想法,选择子字符串(reverse(newid()),0,8)将生成所需的值 可能altertable[dbo].[Question]添加GlobalId

我的团队伙伴执行了以下DDL以添加新列:

ALTER TABLE [dbo].[Question] ADD GlobalId VARCHAR (50) DEFAULT(NEWID());

现在我想更改它,使默认值仅适用于生成的NEWID()的最后八个字符。有人能告诉我如何删除默认设置并创建一个新的默认设置来实现这一点吗。非常感谢

仅给出一个想法,
选择子字符串(reverse(newid()),0,8)将生成所需的值

可能
altertable[dbo].[Question]添加GlobalId VARCHAR(50)DEFAULT(substring(reverse(newid()),0,8))可以帮你

已编辑
@梅丽娜:我如何删除现有的默认值并将其添加为新的默认值

  • 您必须首先从现有数据创建临时表。
    选择col1、col2。。。从[dbo].[Question]将子字符串(反向(GlobalId,0,8))转换为tempt
  • 删除表
    删除表[dbo].[问题]
  • 创建一个包含所有现有字段但不包含新字段的新表
    create table[dbo].[Question](col1-type1,col2-type2…,GlobalId-VARCHAR(8)默认值(子字符串(reverse(newid()),0,8))
  • 将数据从临时表插入新创建的表中

  • 我想你可以用这种方法简单地做到这一点

    Declare @varNewId as nvarchar(50)
    set @varNewId =( select RIGHT(NewID(),3))
    ALTER TABLE [dbo].[Question] ADD GlobalId VARCHAR (50) DEFAULT(@varNewId);
    

    Is GlobalId是Table的新属性GlobalId是现有列名。如何删除现有默认值并将其添加为新默认值?