首页 > 解决方案 > SQL Server - 将多个值插入列

问题描述

我正在尝试更新我的比萨饼,以便它允许不止一种浇头。Cannot insert duplicate key row in object 'dbo.PizzaToppings' with unique index 'FK_Pizza'. The duplicate key value is (3).尝试向列添加多个 toppingID时收到错误消息。如何添加多个 ToppingID?

INSERT INTO dbo.PizzaToppings
(PizzaToppingsID, PizzaID, ToppingsID)
VALUES 
   (1, 1, 1),
   (2, 2, 2),
   (3, 3, 3),
   (4, 4, 7),
   (5, 5, 6),
   (6, 6, 4),
   (7, 3, 7);

创建的 FK_Pizza

CREATE UNIQUE NONCLUSTERED INDEX
FK_Pizza
ON PizzaToppings
(
PizzaID ASC
);

标签: sqltsqlsql-update

解决方案


您正在尝试将数组存储到看起来像数字列的内容中。

通常你会为每个单独的浇头设置一行:

Pizzas:
PizzaID     integer
PizzaName   varchar(32)

Toppings:
ToppingID   integer
ToppingName varchar(32)

PizzaTopping:
PizzaID     integer (fk to Pizzas.PizzaID)
ToppingID   integer (fk to Toppings.ToppingID)

PizzaTopping 将为每个比萨饼的每个浇头包含一行。

编辑更新的问题:

您的错误归结为重复的密钥违规。检查表上的约束,看起来有一个约束阻止您每添加一行以上pizzaID


推荐阅读