Ошибка установки по умолчанию newsequentialid() в sql server 2008

У меня есть столбец uniqueidentifier в таблице, и это не ключ или индекс. Я хочу установить значение по умолчанию с помощью NEWSEQUENTIALID(), но получаю сообщение об ошибке:

Ошибка при проверке значения по умолчанию для столбца..

Но если я использую NEWID(), ошибок не будет. В чем дело?

РЕДАКТИРОВАТЬ: вы можете просто проигнорировать диалоговое окно с ошибкой и продолжить.


person P a u l    schedule 18.06.2009    source источник
comment
В SQL2014 вам нужно использовать тип данных как uniqueidentifier, чтобы использовать метод newsequentialid(), и вы не увидите никаких сообщений об ошибках.   -  person HPWD    schedule 12.01.2017


Ответы (4)


Цитирование принятого ответа на этот вопрос.

Обходной путь: создайте свою таблицу без указания значения по умолчанию, а затем введите этот оператор T-SQL в обычном окне запроса и запустите его:

ALTER TABLE dbo.YourTable
    ADD CONSTRAINT DF_SerialID DEFAULT newsequentialid() FOR SerialID
person programmer    schedule 05.09.2011
comment
То же самое произошло со мной, когда я попытался добавить индекс «уникальный ключ» в существующий столбец uniqueidentifier, который уже был заполнен значением по умолчанию «newsequentialid». Когда я сохранил таблицу, я получил такое же предупреждение, но, как упомянул Павел, вы можете просто нажать «да», чтобы проигнорировать предупреждение, и таблица будет успешно сохранена. Я не могу придумать обстоятельства или причины, по которым это не удалось бы. В любом случае он не должен вызывать значение по умолчанию, если он просто обновляет таблицу. - person Triynko; 02.11.2013
comment
Сначала мне было трудно понять, что нужно изменить, чтобы он работал на меня. Я считаю, что это ALTER TABLE dbo.YourTable ADD CONSTRAINT DF_COLUMN DEFAULT newsequentialid() FOR COLUMN - person Karl Henselin; 08.05.2014

Это ошибка дизайнера, которая не исправлена ​​Microsoft.

http://social.msdn.microsoft.com/Forums/en-US/sqltools/thread/cad8a4d7-714f-44a2-adb0-569655ac66e6

person P a u l    schedule 19.06.2009

согласно документации: http://msdn.microsoft.com/en-us/library/ms189786.aspx Раздел примечаний:

... Когда NEWSEQUENTIALID() используется в выражениях DEFAULT, его нельзя комбинировать с другими скалярными операторами. Например, вы не можете выполнить следующее:

CREATE TABLE myTable (уникальный идентификатор столбца A DEFAULT dbo.myfunction (NEWSEQUENTIALID ())) ...

Это отвечает на ваш вопрос?

person Community    schedule 18.06.2009
comment
Нет, я использую NEWSEQUENTIALID() сам по себе в поле по умолчанию в конструкторе таблиц в студии управления сервером sql. Однако NEWID() работает, и я просто хотел знать, почему. - person P a u l; 19.06.2009
comment
Я понимаю, что вы имеете в виду, я только что проверил это, и при установке NEWSEQUENTIALID() в качестве значения по умолчанию в SSMS 2008 я получаю сообщение об ошибке, но после SQL CREATE TABLE [dbo].[Table_1]([col1] [int] NOT NULL, [ uuid] [uniqueidentifier] NOT NULL ПО УМОЛЧАНИЮ (NEWSEQUENTIALID())) ON [PRIMARY] выполняется нормально, и при последующем редактировании таблицы ошибок не возникает. Похоже на ошибку SSMS. - person ; 19.06.2009

Это неправильно.

следуйте инструкциям здесь:

http://www.geekinterview.com/question_details/31705

person Pieter    schedule 06.03.2012