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