Я добавляю новый столбец 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.
Есть ли обходной путь для этого?
Edit1: изменение NEWSEQUENTIALID()
на NEWID()
в триггере решает эту проблему, но я индексирую этот столбец и использование NEWID()
было бы неоптимальным