Следующая процедура получает данные из C # в виде данных. Я уверен, что таблица отправляется с несколькими строками. Если в нем несколько строк, то данные не вставляются, но если таблица данных содержит только одну строку, она вставляет ее без проблем.
ALTER PROCEDURE [dbo].[MergeContactInfo]
@ContactInfo dbo.[PersonContactTableType] READONLY
AS
BEGIN
MERGE INTO PersonContact AS pc
USING @ContactInfo AS ci ON pc.Person = ci.Person
WHEN MATCHED THEN
UPDATE SET pc.Value = ci.Value, pc.Type = ci.Type
WHEN NOT MATCHED THEN
INSERT VALUES(ci.Person, ci.Type, ci.Value);
END
Любое решение, почему не вставлено несколько строк и вставлена только одна строка, нет никаких уникальных ограничений.
@ Контактная информация следующая
CREATE TYPE [dbo].[PersonContactTableType] AS TABLE(
[Person] [int] NOT NULL,
[Type] [tinyint] NOT NULL,
[Value] [varchar](100) NOT NULL,
PRIMARY KEY CLUSTERED ([Person] ASC) WITH (IGNORE_DUP_KEY = OFF)
)
GO