テーブルに新しい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.
これに対する回避策はありますか?
編集1:トリガーでに変更NEWSEQUENTIALID()
するNEWID()
とこれは解決しますが、この列にインデックスを付けているため、使用NEWID()
するのは最適ではありません