我正在向表中添加新的guid/uniqueidentifier列。
ALTER TABLE table_name
ADD VersionNumber UNIQUEIDENTIFIER UNIQUE NOT NULL DEFAULT NEWSEQUENTIALID()
GO
当更新表中的记录时,我希望更新这个列“versionNumber”。所以我创建了一个新的触发器
CREATE TRIGGER [DBO].[TR_TABLE_NAMWE]
ON [DBO].[TABLE_NAME]
AFTER UPDATE
AS
BEGIN
UPDATE TABLE_NAME
SET VERSIONNUMBER=NEWSEQUENTIALID()
FROM TABLE_NAME D
JOIN INSERTED I ON D.ID=I.ID/* some ID which is used to join*/
END
GO
但刚意识到newSequentialID()只能用于
CREATE TABLE
或
ALTER TABLE
. 我有这个错误
The newsequentialid() built-in function can only be used in a DEFAULT expression for a column of type 'uniqueidentifier' in a CREATE TABLE or ALTER TABLE statement. It cannot be combined with other operators to form a complex scalar expression.
有解决办法吗?
Eddi1:改变
NEWSEQUENTIALID()
到
NEWID()
在触发器中解决了这个问题,但我正在索引此列并使用
NWID()
会是次优的