Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Ошибка SQL Error Duplicate entry for key 1 (DrSoft) 25/04/2004 - 12:42:27
      Re: потому как (Alec) 26/04/2004 - 13:08:34
      Re: потому как (DrSoft) 26/04/2004 - 18:59:10
      Re: мало данных (++) (Alec) 27/04/2004 - 09:37:00
      Re: мало данных (++) (DrSoft) 27/04/2004 - 13:39:29
      Re: убей меня так не бывает (+++) (Alec) 27/04/2004 - 14:18:52
      Re: Блин....но глюк остаеться (DrSoft) 28/04/2004 - 13:25:40
      Re: Блин....но глюк остаеться (Marat_L) 28/04/2004 - 14:55:25
      Re: Блин....но глюк остаеться (DrSoft) 28/04/2004 - 15:21:07
      Re: Покажи код (Marat_L) 29/04/2004 - 09:07:47
      Re: Покажи код (DrSoft) 29/04/2004 - 12:11:12
      Re: Стало понятно (Marat_L) 29/04/2004 - 14:27:16

> Original message text:
> From: DrSoft - 25/04/2004 - 12:42:27
> Subject:Ошибка SQL Error Duplicate entry for key 1
> -----------------
> Может кто встречался с такой проблемой, и с чем она может быть связана подскажите плизз...
>


From: Marat_L - 29/04/2004 - 14:27:16
Subject:Стало понятно
-----------------
Вот теперь я думаю все ясно.

Для 100% уверенности не хватает
1) "show cheate table "
2) У тебя сервер на linux или win?
Если linux то freedok и FREEDOK - разные таблицы (еще одна возможная ляпа).

Итак:
В твоей таблице есть автоинкрементальное поле, которое ты сказал не указываешь в INSERT. И оно считается скорее всего правильно.
Проблема с полем iddog, которое скорее всего объявлено уникальным, которое вводится вручную, и которое ты вставляешь явно.

Будучи не силен в твоем языке программирования (Delphi?) я полагаю что код правильный. Касаясь только логики предлагаю следующие варианты:

1)сделать таблицу FREEDOK типа InnoDB
begin
select count(iddog) as recd from freedok where iddog=(:p_1) FOR UPDATE
#после этого ни одна сволочь не сможет вставить чтонибудь с таким ключом
Ну и далее если неудача
rollback
Иначе
insert into ....
commit

2) Не разрешать пользователям изменять то, что должно быть уникальным и контролируется системой. Например использовать для этого тот же инкрементный ключ :)
Я бы сделал нарпимер EditNdog.Enabled:=false; (ну или типа такого)

3) Сделать у разных пользователей номера документов принципиально-непересекаемыми. Например номер+литера




[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
14374



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |