Страница: 1 |
Страница: 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 значения и оказываются разными).
Проблему решил проще - заменил во второй архивной таблице ключи на кластерные индексы. Все равно ключи там нафиг не нужны...