У меня есть это ограничение в таблице:Как я нарушаю это ограничение?
CREATE TABLE [dbo].[InventoryLocations]
(
[recid] [int] IDENTITY(1,1) NOT NULL,
[LocItemNumber] [char](16) NOT NULL,
[WareHouse] [char](2) NOT NULL,
[Aisle] [char](3) NOT NULL,
[Slot] [char](3) NOT NULL,
[locLevel] [char](2) NOT NULL,
[Bin] [char](2) NOT NULL,
[Extra] [char](2) NOT NULL,
[LocNumber] [char](2) NOT NULL,
[RollNumber] [char](20) NOT NULL,
[QuickRoll] [int] NOT NULL,
[SkidNumber] [char](15) NOT NULL,
[RollsInStock] [int] NOT NULL,
[LocQtyOnHand] [float] NOT NULL,
[LocQtyOnOrder] [float] NOT NULL,
[LocQtyCommited] [float] NOT NULL,
[TotalReceived] [float] NOT NULL,
[TotalIssued] [float] NOT NULL,
[TotalDollars] [float] NOT NULL,
[Capacity] [float] NOT NULL,
[AvailableSpace] [float] NOT NULL,
[bkey0] [char](30) NULL,
[bkey1] [char](30) NULL,
[bkey2] [char](30) NULL,
[bkey3] [char](14) NULL,
[LastPhysicalCountDate] [datetime] NULL,
[LastCycleCountDate] [datetime] NULL,
[EnteredBy] [varchar](50) NULL,
[EnteredDateTime] [datetime] NULL,
CONSTRAINT [IX_InventoryLocations_1] UNIQUE NONCLUSTERED
(
[LocItemNumber] ASC,
[WareHouse] ASC,
[Aisle] ASC,
[Slot] ASC,
[locLevel] ASC,
[Bin] ASC,
[Extra] ASC,
[RollNumber] ASC,
[SkidNumber] ASC
));
И при попытке вставить следующие строки, я получаю сообщение об ошибке. Внутри курсора, который заполняет переменные.
INSERT INTO [AVANTISERVER\NCL_MASTER].[Avanti].[dbo].[InventoryLocations](LocItemNumber, WareHouse, Aisle, Slot, locLevel, Bin, Extra, RollNumber, LocQtyOnHand, SkidNumber)
SELECT @item, 'F', 'L', 'E', 'X', 'O', @seq, @seq, @qty, @seq
FROM FI_CurrentReceiptData CR
Который работает на:
VALUES('MW1', 'F', 'L', 'E', 'X', 'O', 0, 0, 10, 0)
VALUES('MW1', 'F', 'L', 'E', 'X', 'O', 1, 1, 10, 1)
Msg 2627, Level 14, состояние 2, строка 34 Нарушение UNIQUE KEY ограничение 'IX_InventoryLocations_1. Невозможно вставить дублирующий ключ в объект «InventoryLocations».
Пожалуйста, помогите мне понять, почему я не могу сделать эти вставки? Я не испытываю таких сложных ограничений. Что это означает (простыми словами) и как я могу обойти это? Действительно ли я нарушаю ограничение?
Можете ли вы показать схему для таблицы, или она точно такая же, как показано в определении ограничения? Можете ли вы также показать точный оператор 'INSERT' (или вообще не включать имена столбцов)? Обратите внимание, что нарушение ограничений может не возникать из-за столкновения в двух строках, которые вы вставляете, но одна или обе комбинации клавиш могут уже существовать в таблице. –
Является ли LocItemNumber основным ключом для таблицы? –
Предложение 'values' теперь не имеет никакого отношения к вашей структуре таблицы. Каков фактический код, который терпит неудачу? –