将默认的GUID值插入表列

时间:2019-02-16 19:57:00

标签: sql-server tsql

我正在尝试播种一个表,对于初始数据加载,我希望CreateBy列具有默认GUID 00000000-0000-0000-0000-000000000000的值。有没有简单的方法可以做到这一点?有没有办法让NEWID()生成默认值?

3 个答案:

答案 0 :(得分:1)

ALTER TABLE dbo.YOUR_TABLE ADD CONSTRAINT
    DF_UID DEFAULT CAST ('00000000-0000-0000-0000-000000000000' AS UNIQUEIDENTIFIER) FOR COLUMN_NAME

只需将默认值添加到列

答案 1 :(得分:0)

您可以明确地强制转换此字符串:

INSERT INTO mytable
(createdBy)
VALUES (CAST ('00000000-0000-0000-0000-000000000000' AS UNIQUEIDENTIFIER));

答案 2 :(得分:0)

我认为最简单的方法是将二进制零转换为GUID:

SELECT CAST(0x0 AS UNIQUEIDENTIFIER);

这实际上是隐式转换的。试试这个:

将类型化的GUID变量设置为0x0

DECLARE @id1 UNIQUEIDENTIFIER;
SET @id1=0x0;
SELECT @id1;

直接分配0x0

DECLARE @id2 UNIQUEIDENTIFIER=0x0;
SELECT @id2;

或将其用于表的列:

DECLARE @tbl TABLE(Id UNIQUEIDENTIFIER)
INSERT INTO @tbl(id) VALUES(0x0);
SELECT * FROM @tbl; 

它也将作为默认约束:

DECLARE @tbl TABLE(Id UNIQUEIDENTIFIER DEFAULT (0x0), SomeOtherValue VARCHAR(100));
INSERT INTO @tbl(SomeOtherValue) VALUES('GUID by default');
SELECT * FROM @tbl; 

提示::看起来好像您有一个以GUID为ID的用户表,这是指向该表的FK-ID。在这种情况下,您将必须将具有零ID的用户维护为 dummy 。老实说:我宁愿建议使用一个可为空的列,并用一个NULL标记一个 missing 值,而不是一个 magic值 ...