Установка идентификатора для включения или выключения на SQL-сервере

Я хочу установить свойство Is Identity столбца и после вставки явного значения, чтобы он снова включался. Я написал этот запрос:

SET IDENTITY_INSERT Tbl_Cartoons OFF

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

Ответ 1

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

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

Ответ 2

Фактически вы хотите использовать SET IDENTITY_INSERT Tbl_Cartoons ON, прежде чем пытаться вставить явные значения.

Вы говорите, что " I будет отвечать за вставку значений в столбец IDENTITY.

SET IDENTITY_INSERT Tbl_Cartoons OFF говорит: "Я позволю системе взять на себя ответственность за вставку значений в столбец IDENTITY".

Ответ 3

Чтобы вставить явные значения в столбец идентификатора, выполните следующие действия:

SET IDENTITY_INSERT Tbl_Cartoons  ON
GO

-- code to insert explicit ID values

SET IDENTITY_INSERT Tbl_Cartoons  OFF
GO

Ответ 4

В сеансе, который устанавливает SET IDENTITY_INSERT, разрешено вводить явные значения.

Но столбец по-прежнему является столбцом идентификации. Это просто, что ваша сессия может игнорировать ограничение личности.

Ответ 5

Установите identity_insert для того, чтобы явным образом установить значение столбца id. Снова установите его для автоматического назначения.

Ответ 6

Вы можете отключить свойство Identity, но оно включает в себя редактирование системных таблиц, которые не считаются хорошей практикой. Вы также вряд ли будете иметь необходимые права и, вероятно, увидите You do not have permission to run the RECONFIGURE statement, выполнив следующий код:

DECLARE @tableName nvarchar(128) = 'YourTable';

-- Get a list of identity columns (informational)
SELECT OBJECT_NAME(object_id) tableName, sc.name colName, st.name dataType
FROM sys.columns sc
JOIN sys.types st
    ON st.system_type_id = sc.system_type_id
WHERE sc.is_identity = 1
AND OBJECT_NAME(object_id) = @tableName

-- Allow ad-hoc changes to system catalogs
EXEC  sp_configure 'allow update', 1
GO
reconfigure with override
GO
-- Eliminate the identityness
UPDATE syscolumns SET colstat = colstat - 1
WHERE id = object_id(@tableName)
AND name = 'Id' -- Specify column if you like, though only one identity per table is currently supported
GO
-- Unallow ad-hoc changes to system catalogs
exec sp_configure 'allow update', 0
GO
reconfigure with override
GO