CREATE Type SupplierTable_type as table(
[Supplier_ID] [nvarchar](10) NOT NULL,
[CounterID] [int] IDENTITY(1,1) NOT NULL,
[SupplierNotes] [ntext] NULL,
[GUID] [uniqueidentifier] NULL
)
GO
--------------------------------------
CREATE PROCEDURE [dbo].[Update_SupplierTable]
@TblSupplierTable SupplierTable_type READONLY
AS
BEGIN
SET NOCOUNT ON;
MERGE INTO SupplierTable c1
USING @TblSupplierTable c2
ON (c1.Supplier_ID COLLATE SQL_Latin1_General_CP1_CI_AS)=(c2.Supplier_ID COLLATE SQL_Latin1_General_CP1_CI_AS)
WHEN MATCHED THEN
UPDATE SET
c1.[Supplier_ID] = c2.[Supplier_ID]
,c1.[CounterID]=c2.[CounterID]
,c1.[SupplierNotes]=c2.[SupplierNotes]
,c1.[GUID]=c2.[GUID]
WHEN NOT MATCHED THEN
INSERT VALUES(
c2.[Supplier_ID]
,c2.[CounterID]
,c2.[SupplierNotes]
,c2.[GUID]
);
END
Error:
Msg 8102, Level 16, State 1, Procedure Update_SupplierTable, Line 7 [Batch Start Line 57] Cannot update identity column 'CounterID'.