|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
21.12.2010, 22:36 | #1 |
Регистрация: 21.12.2010
Сообщений: 7
|
Violation of primary key constraint .Cannot insert duplicate key in object Как избавиться?
Всем привет. Есть БД в которой присутствуют таблицы Driver и Driver_Del(поля как и в driver + 2 дополнительных поля, которые могут быть null). Нужно при нажатии на кнопку запись из таблицы Driver перенести в Driver_Del и удалить из Driver. При перенесении записи из одной таблицы в другую вылетает сообщение "violation of primary key constraint 'PK_Del_Driver_55F4C372'.Cannot insert duplicate key in object 'Del_Driver'". Но запись в таблицу вставляется. Можно ли сделать так, чтобы это сообщение не выскакивало? Как написать для него исключение? Заранее спасибо.
Нажатие кнопки Код:
|
21.12.2010, 23:47 | #2 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 216
|
В таблице Del_Driver уже существует передаваемое значение поля id_driver на момент вставки новой строки (значение из Edit1). Отсюда ошибка.
На какой стороне генерится уникальное значение id_driver? На сервере или клиенте? |
22.12.2010, 00:21 | #3 |
Регистрация: 21.12.2010
Сообщений: 7
|
БД локальная SQL Server 2000. Даже когда таблица Del_Driver пустая, ошибка эта все равно вылезает.
|
22.12.2010, 00:44 | #4 |
Форумчанин
Регистрация: 26.07.2009
Сообщений: 216
|
На вопрос, заданный в посте #2 ответьте себе. Может быть ситуация проясниться.
Если поле id_driver в Del_Driver является ключевым с автоинкрементом (судя по схеме, именно так дело и обстоит), а, следовательно, его значение генерит сервер, то предложение insert значение этого поля записывать не может. В случае приведенной схемы БД и ее логики, это поле не может быть уникальным (читай, автоинкрементным) в таблице Del_Driver, т.к. его значение "переписывается" из другой таблицы. Отсюда и проблемы. По уму если, то в Del_Driver ключевым полем должно быть другое (ID, допустим), а id_driver должно содержать значение одноименного поля из таблицы Driver и быть обычным полем, а не PRIMARY KEY. Опять же, и в ситуации какая сейчас и в той, которая описана абзацем выше, значение поля id_driver таблицы Del_Driver после удаления строки из таблицы Driver никакого смысла не несет и бесполезно в качестве информации. Последний раз редактировалось Karabash; 22.12.2010 в 01:11. Причина: Решение |
28.12.2010, 06:46 | #5 |
Заблокирован
Регистрация: 28.11.2010
Сообщений: 5
|
Violation of primary key constraint Cannot insert duplicate key in object Как избавиться
Че то я не догнал про код µ®©®¤w№, у меня на втором вхождении в EditEndProc вылетает Access Violation, это что получается что после выполнения FormCreate oldproc указывает на EditWndProc, а внутри EditWndProc вызывается oldproc
и так бесконечная рекурсия, если нет, то почему Access Violation вылетает? P.S. курсор я убил так CODE |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Key$2Bin | depocomp | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 26.05.2009 10:35 |
violation of FOREIGN KEY | KiSH333 | БД в Delphi | 1 | 17.02.2009 16:05 |
забыла свой пароль в аське, объясните как пользоваться программой Asterisk Key | Chulita | Свободное общение | 14 | 09.12.2008 18:42 |