CREATE TYPE [dbo].[IdList] AS TABLE ([Id] [int] NULL)
GO
如何在一个类型中多次插入相同的值?
猜猜它类似于IGNORE_DUP_KEY
,但我似乎无法上班
答案 0 :(得分:1)
如果列上没有键或索引(因为在您给出的语句中没有键或索引),则对于在表中多次插入相同的值已经没有限制。
DECLARE @i IdList
INSERT @i VALUES (1), (1), (1)
就可以了。如果您想使用IGNORE_DUP_KEY
选项来拥有唯一索引,那么如果该值已经存在,则插入将被丢弃,而不是产生约束冲突,您可以通过在声明中包括该选项的唯一索引来实现:
CREATE TYPE [dbo].[IdList] AS TABLE (
[Id] [int] NULL,
INDEX IX_IdList_Id UNIQUE(ID) WITH (IGNORE_DUP_KEY = ON)
);
或使用主键(对于不可为空的列):
CREATE TYPE [dbo].[IdList] AS TABLE ([Id] [int] PRIMARY KEY WITH (IGNORE_DUP_KEY = ON));
注意这一点,因为静默丢弃重复值可能是掩盖处理过程中基本问题的真正好方法。 SQL Server确实会生成信息性消息“忽略了重复的密钥”,但是该消息本身很容易被忽略(并且没有提供有关哪些密钥的详细信息)。
答案 1 :(得分:0)
Jeroen Mostert确实告诉我只是去掉了钥匙,而我确实做了蚂蚁