Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: Violation of PRIMARY KEY Добавлено: 22.12.05 15:23  

Автор вопроса:  LamerOnLine | ICQ: 334781088 
Есть такая конструкция

IF NOT EXISTS(SELECT * FROM MMVBOrderBook WITH (NOLOCK) WHERE SecCode = @SecCode AND SecBoard = @SecBoard AND BuySell = @BuySell)
BEGIN
INSERT INTO MMVBOrderBook (TradeDate, PostDate, BuySell, SecBoard, SecCode, Price, Quantity, CumulativeSum, MyOrders, Volume, OrderValue)

VALUES (@TradeDate, GETDATE(), @BuySell, @SecBoard, @SecCode, dbo.GetMoneyFromChar(@Price, @Decimals), @Quantity, @CumulativeSum, @MyOrders, @Volume, dbo.GetMoneyFromChar(@Value, @Decimals))

GOTO E1
END
-- Update Existing Tickets
INSERT INTO MMVBOrderBookArc SELECT * FROM MMVBOrderBook WITH (NOLOCK) WHERE SecCode = @SecCode AND SecBoard = @SecBoard AND BuySell = @BuySell

UPDATE MMVBOrderBook SET TradeDate = @TradeDate, PostDate = GETDATE(), Price = dbo.GetMoneyFromChar(@Price, @Decimals),
Quantity = @Quantity, CumulativeSum = @CumulativeSum, MyOrders = @MyOrders, Volume = @Volume, OrderValue = dbo.GetMoneyFromChar(@Value, @Decimals)
WHERE SecBoard = @SecBoard AND SecCode = @SecCode AND BuySell = @BuySell
GOTO E1

Для таблицы MMVBOrderBook ключами являются BuySell, SecBoard, SecCode, для MMVBOrderBookArc - BuySell, SecBoard, SecCode, PostDate.
PostDate задается через GETDATE(). Каким образом может возникать ошибка
Violation of PRIMARY KEY constraint 'PK_MMVBOrderBookArc'. Cannot insert duplicate key in object 'MMVBOrderBookArc'
?

Ответить

  Ответы Всего ответов: 2  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 22.12.05 16:33
Все перечисленные поля входят в первичный ключ?

Ответить

Номер ответа: 2
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #2 Добавлено: 22.12.05 17:09
Только они и входят.
В общем, глюк видать был в том что при слишком малом периоде обновления параметр PostDate дублировался (в отличие от своего float представления он почему то обеспечивает точность до секунды, хотя при конвертации обратно во float значения и оказываются разными).
Проблему решил проще - заменил во второй архивной таблице ключи на кластерные индексы. Все равно ключи там нафиг не нужны...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам