Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

Свойство IDENTITY   Найти похожие ветки 

 
bushmen ©   (2004-04-15 15:41) [40]

>а у другой таблички - "структура почти такая же" - всё хорошо

А если таблицу "убить" и заново создать - глюк повторяется? А у тебя sp3 на SQL Server стоит?


 
sniknik ©   (2004-04-15 15:46) [41]

непонятен конечно смысл этого убирания/установки но проверил как написано, убрал сохранил опять поставил, работает (почти не сомневался) и после 5 инсертов ключь не дублируется (и для инт и для тиниинт).
может конечно у тебя F2 ключом является...

распиши подробно как получить ошибку (по шагам). а то неполучается нифига.


 
Patrick ©   (2004-04-16 08:28) [42]

Добрый день!
Вчера ответить не удалось, Инет у нас срубили, пробовал и таблицу "убивать" и хранимую процедуру (в которой делаю инсерт)естественно тоже, ничего не помогает, ну а подробное описание таково, ну создаю табличку заново. указываю первичный ключ только по полю тиниинт и ставлю идентити по этому полю, далее создаю процедуру, в ней по входным опциям операции для этой таблицы (SELECT,UPDATE,INSERT,DELETE). Ну и потом выполняю эту процедуру для инсерта один раз - нормально, возможно и второй раз нормально, но далее - идет дублирование. Меня заинтересовало предложение по поводу SP3 посмотрел на диске, там отдельно от установки сервака есть SP1 и SP2, а также какие-то Security Hotfix Update (3шт.) различных версий (откровенно не знаю что это такое) и не помню ставили мы их или нет. А вот SP3 там нет, может подскажите где его можно нарыть в Инете.


 
sniknik ©   (2004-04-16 10:42) [43]

ну во первых это не подробное описание.
а во вторых совмещая описание [39] с [42] понял так, что ты делаеш все возможное чтобы запутать MSSQL и нас заодно. (про процедуру сказал только в 42м посте, это как? у тебя цель какая, решить чтото или на судьбу и била пожаловаться? )
извини но проверять это уже ломает (так и не понял последовательность, и в результате уверен на 99.8%, не будет глюка).
кстати смысл программирования не в том чтобы найти глюк в чужом продукте а в написании своего безглючного, даже если приходится обходить дыры разработчика (которых немного кстати говоря и это не из их числа).  

> А вот SP3 там нет, может подскажите где его можно нарыть в Инете.
3 сервис пак затыкает дырку от вируса, в основном. раскопками можно занятся на сайте производителя продукта.


 
bushmen ©   (2004-04-16 10:46) [44]

>3 сервис пак затыкает дырку от вируса, в основном

Он еще много чего делает. В том числе и калечит некоторые вещи :)


 
Patrick ©   (2004-04-16 12:17) [45]

Да нет, моя цель - именно решить проблему, а про хранимую не говорил т.к. там всё прозрачно (наверное), текст создания таблицы и хранимой процедуры привожу ниже, уж не знаю куда пробнее.

CREATE TABLE [dbo].[Fuels] (
[FuelCode] [tinyint] IDENTITY (1, 1) NOT NULL ,
[FuelName] [char] (10) COLLATE Cyrillic_General_CI_AS NOT NULL
) ON [PRIMARY]
GO

ALTER TABLE [dbo].[Fuels] WITH NOCHECK ADD
CONSTRAINT [PK_Fuels] PRIMARY KEY  CLUSTERED
(
 [FuelCode]
)  ON [PRIMARY]
GO

и хранимая

CREATE PROCEDURE dbo.FuelAction
@Option smallint,
@pFuelCode tinyint,
@pFuelName char(5)
AS

BEGIN

IF @Option = 0
SELECT f.FuelCode, f.FuelName
FROM NSI.dbo.Fuels f

BEGIN TRANSACTION

IF @Option = 1
UPDATE NSI.dbo.Fuels
SET FuelName = @pFuelName
WHERE FuelCode = @pFuelCode

IF @Option = 2
INSERT INTO NSI.dbo.Fuels (FuelName)
VALUES (@pFuelName)

IF @Option = 3
IF EXISTS(SELECT * FROM NSI.dbo.Marks WHERE FuelCode = @pFuelCode)
    RAISERROR ( "Удаление невозможно. Данный тип топлива есть в справочнике моделей.", 16, 127)
ELSE
DELETE FROM NSI.dbo.Fuels
WHERE FuelCode = @pFuelCode

IF @Option = 4
DELETE FROM NSI.dbo.Fuels
DBCC CHECKIDENT("NSI.dbo.Fuels", RESEED, 0);

COMMIT TRANSACTION

END
GO


 
paul_k ©   (2004-04-16 12:47) [46]

А каков тайный смысл строки

> DBCC CHECKIDENT("NSI.dbo.Fuels", RESEED, 0);

если её коментаришь все работает.

This example forces the current identity value in the jobs table to a value of 30.
USE pubs
GO
DBCC CHECKIDENT (jobs, RESEED, 30)
GO
то есть после выполнения твоей строки у тебя следующий ID  обязан быть 1. вот тебе и ннарушение ключа


 
Patrick ©   (2004-04-16 13:27) [47]

ВСЕМ ПАРДОН ЗА БЕСПОКОЙСТВО и НАПРЯГ. ОШИБКА ОКАЗАЛАСЬ БОЛЕЕ ЧЕМ БАНАЛЬНОЙ - ЗАБЫЛ BEGIN ... END ПОСТАВИТЬ, ЕЩЕ РАЗ ВСЕМ SORRY.


 
bushmen ©   (2004-04-16 13:35) [48]

>Patrick ©  

С тебя по ящику пива для каждого за напрасное беспокойство! :)))


 
Patrick ©   (2004-04-16 14:09) [49]

Обязательно, где встречаемся для совместного пития?


 
sniknik ©   (2004-04-16 14:19) [50]

ну наконец то подробно, но опоздал...


 
paul_k ©   (2004-04-16 14:22) [51]

кстати если вместо
DELETE FROM NSI.dbo.Fuels
DBCC CHECKIDENT("NSI.dbo.Fuels", RESEED, 0);

написать просто
truncate table NSI.dbo.Fuels
будеи эффект тот-же а исполнение быстрее


 
bushmen ©   (2004-04-16 14:38) [52]

>Patrick ©   (16.04.04 14:09) [49]

На УАЗе :)



Страницы: 1 2 вся ветка

Текущий архив: 2004.05.16;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.025 c
14-1082971693
savva
2004-04-26 13:28
2004.05.16
учитесь:))


1-1083435603
neteditor
2004-05-01 22:20
2004.05.16
Как выгрузить TMemoryStream в PChar?


1-1083649698
konstantinov
2004-05-04 09:48
2004.05.16
Как вывести сообщение поверх всех окон


14-1082600202
Думкин
2004-04-22 06:16
2004.05.16
С днем рождения! 22 апреля.


1-1083561732
Ivolg
2004-05-03 09:22
2004.05.16
Ссылка!