Sql server 创建新行时,如何将GUID的前8个字符插入列中?

Sql server 创建新行时,如何将GUID的前8个字符插入列中?,sql-server,Sql Server,我的数据库中有一个SQL server表 在名为Admin的表中有一个名为code的列 如何将GUID的前8个字符设为默认值?请注意,此列是一个varchar(8)。而Alter table ALTER TABLE ADMIN ADD CONSTRAINT DF_SomeName DEFAULT LEFT(NEWID(), 8) FOR Code; 或 或 创建表时 CREATE TABLE ADMIN( Code varchar(8) CONSTRAINT DF_PurchaseOrd

我的数据库中有一个SQL server表

在名为
Admin
的表中有一个名为
code
的列

如何将GUID的前8个字符设为默认值?请注意,此列是一个varchar(8)。

而Alter table

ALTER TABLE ADMIN 

ADD CONSTRAINT DF_SomeName DEFAULT LEFT(NEWID(), 8) FOR Code;

创建表时

CREATE TABLE ADMIN(
Code varchar(8)
 CONSTRAINT DF_PurchaseOrderDetail_rowguid DEFAULT
 LEFT(NEWID(), 8) FOR Code
 )


添加默认约束:

ALTER TABLE [dbo].[Admin] ADD  CONSTRAINT [DF_Admin_Code]  
DEFAULT (substring(CONVERT([varchar](50),newid(),0),(1),(8))) FOR [Code]

试试这个-
选择LEFT(NEWID(),8)
。我想这就是您想要的。您能告诉我如何将其设置为列的默认值吗?请注意,GUID的前8个字符不能保证唯一,因此该表中的多行可能具有相同的
code
CREATE TABLE ADMIN(
Code varchar(8)
 CONSTRAINT DF_PurchaseOrderDetail_rowguid DEFAULT
 LEFT(NEWID(), 8) FOR Code
 )
CREATE TABLE ADMIN(
Code varchar(8)
 CONSTRAINT DF_PurchaseOrderDetail_rowguid DEFAULT
 RIGHT(NEWID(), 8) FOR Code
 )
CREATE TABLE ADMIN(
Code varchar(8)
 CONSTRAINT DF_PurchaseOrderDetail_rowguid DEFAULT
 SUBSTRING(CAST(NEWID() as VARCHAR(50)),1,8 ) FOR Code
 )
ALTER TABLE [dbo].[table] 
    ADD CONSTRAINT [DF_table_myColumn] DEFAULT(left(newid(), (8)))
    FOR [myColumn]
GO
ALTER TABLE [dbo].[Admin] ADD  CONSTRAINT [DF_Admin_Code]  
DEFAULT (substring(CONVERT([varchar](50),newid(),0),(1),(8))) FOR [Code]