Как назначить постоянный уникальный идентификатор с T- SQL - PullRequest
0 голосов
/ 09 февраля 2020

Может кто-нибудь дать мне знать, как навсегда назначить уникальный идентификатор полю?

У меня есть следующая таблица:

CREATE TABLE PrestigeCars.Reference.Staff 
(
     StaffName NVARCHAR(50) NULL,
     ManagerID INT NULL,
     Department NVARCHAR(50) NULL
) ON [PRIMARY]
GO

Следующий код назначает новое поле идентификатора для таблица с именем 'myuniqueID'

SELECT
    Staff.StaffName
    ,Staff.ManagerID
    ,Staff.Department
    ,NEWID() AS myuniqueID
FROM Reference.Staff

Это приведет к следующей таблице:

enter image description here

Проблема в том, что я хотел бы уникальные идентификаторы, созданные для того, чтобы стать постоянными.

Может кто-нибудь сообщить мне, возможно ли это?

1 Ответ

1 голос
/ 09 февраля 2020
CREATE TABLE PrestigeCars.Reference.Staff (
  StaffName NVARCHAR(50) NULL
 ,ManagerID INT NULL
 ,Department NVARCHAR(50) NULL
 , UniqueId NVARCHAR(255) NOT NULL default NEWID()
) ON [PRIMARY]
GO

Важно то, что это работает только для создания таблицы. Если вы хотите изменить таблицу, вы должны сначала добавить столбец, который должен разрешить нулевое значение, затем заполнить значения и, наконец, установить его не равным нулю.

Редактировать: чтобы добавить столбец, вам нужно изменить оператор таблицы, как упоминалось во многих других постах ранее:

ALTER TABLE PrestigeCars.Reference.Staff  
ADD UniqueId NVARCHAR(255) NULL default NEWID()

Далее необходимо установить уникальный идентификатор для существующих строк:

UPDATE PrestigeCars.Reference.Staff 
SET UniqueId = NEWID()
WHERE UniqueId IS NULL

И последнее, но не менее важное - установить столбец. не равны нулю:

 ALTER TABLE PrestigeCars.Reference.Staff
ALTER COLUMN UniqueId NOT NULL

Вы можете добавить уникальный индекс, если хотите, но в этом нет необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...