Sql-Server

是否需要“SET IDENTITY_INSERT”才能將任意 GUID 插入你問__你和d_entif我__你n一世q你和一世d和n噸一世F一世和runiqueidentifier柱子?

  • September 17, 2019

SQL Server 2016 和 2017,標準版

我需要將原始數據(來自另一個表)插入一個有兩uniqueidentifier列的表中。

這需要我使用SET IDENTITY_INSERT Carrier ON嗎?

這是表格:

SET ANSI_NULLS ON

SET QUOTED_IDENTIFIER ON

CREATE TABLE [dbo].[Parkingspace](
   [ParkingspaceId] [uniqueidentifier] NOT NULL,
   [AccountId] [uniqueidentifier] NULL,
   [ParkingspaceType] [smallint] NULL,
CONSTRAINT [PK_ParkingspaceId] PRIMARY KEY CLUSTERED 
(
   [ParkingspaceId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, 
ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) ON [PRIMARY]
) ON [PRIMARY]

如果沒有該IDENTITY_INSERT選項**,以下內容是否有效?**(我認為應該,但這裡的 DBA 非常喜歡這個IDENTITY_INSERT選項。)

INSERT INTO Parkingspace 
 (ParkingspaceID,AcountID,ParkingspaceType)
 SELECT * FROM PRODDBCopy.Parkingspace

IDENTITY_INSERT僅用於具有IDENTITY屬性的列。

UNIQUEIDENTIFIER只是一種數據類型。

您的插入語句將起作用。

您可以隨時檢查是否需要身份插入:

SELECT CONCAT(N'SET IDENTITY_INSERT ', QUOTENAME(OBJECT_SCHEMA_NAME([object_id])), N'.', QUOTENAME( OBJECT_NAME([object_id])), N' ON;')
FROM sys.identity_columns
WHERE [object_id] = OBJECT_ID(table_of_your_interest);

如果上面返回一條記錄,只需將其粘貼到您的插入語句之前。

引用自:https://dba.stackexchange.com/questions/229673