Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

Свойство 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.54 MB
Время: 0.035 c
11-1069064483
Revolter
2003-11-17 13:21
2004.05.16
Помогите с прозрачностью


6-1080452712
Chestor
2004-03-28 09:45
2004.05.16
соединение и передача в 16-ном- виде.


14-1082840890
NeyroSpace
2004-04-25 01:08
2004.05.16
Хотя я не ругаюсь, но нашел этот ресурс полезным для себя :-)


1-1083219729
Goida
2004-04-29 10:22
2004.05.16
Использование DLL из C++ в Delphi


14-1083134788
syte_ser78
2004-04-28 10:46
2004.05.16
Помогите найти





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский